티스토리 뷰
자바를 하다보면 숫자 옆에 L 이 붙은게 있다. 12345L 이런식..
우선 자바에서 숫자형 중에 가장 많이 쓰이는 int를 살펴보면
Int
int는 integer(정수)의 약자이고 4 bytes(32 bits)의 크기를 가진 자료형으로 가장 보편적으로 쓰이는 정수형이기도 하다. 32 bits에는 4,294,967,296개의 숫자를 저장 할 수 있다. 2^32개를 저장 할 수 있다는 것만 이해하면 된다. 마찬가지로 반으로 나눠 반은 음수를 나머지 반은 0과 양수를 표현한다. 표현 할 수 있는 숫자의 범위는 -2,147,483,648 ~ 2,147,483,647이다.
정말 32 bits(4 바이트)인지 최대,최소 값은 어떻게 되는지 찍어보자.
package test;
public class Test {
public static void main(String[] args) {
System.out.println(Integer.SIZE);
System.out.println(Integer.BYTES);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
}
}
결과:
32
4
-2147483648
2147483647
32 비트 4바이트 최소,최대값을 볼 수 있다.
최대값은
21억 4천 7백 4십 8만 3천 6백 4십 7.
이십 일억 사천 7백 사십 팔만 삼천 육백 사십 칠.
DB 키값으로 int 많이 쓰니 자바에서는 얼마나 커버 하고 있는지 알고 있으면 좋을듯.
그럼 int 의 양의 최대값을 int 변수에 대입해서 출력해보자.
package test;
public class Test {
public static void main(String[] args) {
int val = 2147483647;
System.out.println(val);
}
}
결과:
2147483647
그럼 int의 최대 허용량을 넘었을때를 보기 위해 1을 추가하면
package test;
public class Test {
public static void main(String[] args) {
int val = 2147483648;
System.out.println(val);
}
}
결과:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 2147483648 of type int is out of range
at test.Test.main(Test.java:4)
리터럴 2147483648이 int 형의 범위를 벗어났다고 나온다.
Long
위의 int와 마찬가지로 Long에 대해서 찍어보면
package test;
public class Test {
public static void main(String[] args) {
System.out.println(Long.SIZE);
System.out.println(Long.BYTES);
System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}
결과:
64
8
-9223372036854775808
9223372036854775807
64비트 8바이트 최소,최대 크기를 알 수 있다.
그래서 정수형 크기가 작아서 변수 선언을 int대신에 long으로 바꾸면
package test;
public class LongTest {
public static void main(String[] args) {
long val = 2147483648;
System.out.println(val);
}
}
결과:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 2147483648 of type int is out of range
at test.LongTest.main(LongTest.java:4)
왜 int를 long으로 바꿨는데 에러가 날까?
이유는 자바에서는 리터럴에 L을 안붙이면 정수라고 본다. 그러고 보면 정수에 특화되고 중요하다고 보는거 같음.
그래서 리터럴 끝에 L을 붙여줘야 long 타입으로 변한다.
그래서 long이라고 L을 붙여보자.
package test;
public class LongTest {
public static void main(String[] args) {
long val = 2147483648L;
System.out.println(val);
}
}
결과:
2147483648
에러없이 long을 사용하고 있다. 대문자 L대신에 소문자 l도 사용이 가능하다.
package test;
public class LongTest {
public static void main(String[] args) {
long val = 2147483648l;
System.out.println(val);
}
}
결과:
2147483648
보이는가?
잘 보지 않으면 l이 숫자 1 처럼 보인다. 그래서 통상 l 대신에 L로 써준다. 그러고 보니 l이 파이프 | 처럼 보이기도 하네요..
'자바(Java)' 카테고리의 다른 글
jsp 파일 다운로드 (0) | 2021.05.06 |
---|---|
자바 smtp 메일 보내기 소스 (0) | 2021.05.03 |
자바 Math.ceil 사용 방법 (0) | 2020.09.01 |
[java] 자바 엑셀 쓰기 Apache POI 사용 xlsx (0) | 2020.08.26 |
[java] 자바 엑셀 쓰기 Apache POI 사용 xls (0) | 2020.08.26 |
- Total
- Today
- Yesterday
- KG
- 문자열
- Python
- 자바 smtp
- php
- XE3
- webix
- ocjap
- 스크래핑
- C언어
- 라이믹스 모듈
- 프로씨
- proc
- xe애드온
- C
- 이클립스
- EC
- 파이썬
- 자바
- 인포믹스
- 파싱
- 플러터
- 포인터
- esql
- XE
- MySQL
- xe addon
- ocajp
- 오라클
- JDBC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |