-
[Java] 타입 선언언어/Java 2020. 12. 26. 20:12
정수 타입
타입 메모리크기 범위 byte 1 byte 8 bit -2⁷ ~ (2⁷ - 1) -128 ~ 127 short 2 byte 16 bit -2¹⁵ ~ (2¹⁵ - 1) -32,768 ~ 32,767 char 2 byte 16 bit 0 ~ (2¹⁶ - 1) 0 ~ 65535 (유니코드) int 4 byte 32 bit -2³¹ ~ (2³¹ - 1) -2,147,483,648 ~ 2,147,483,647 long 8 byte 64 bit -2⁶³ ~ (2⁶³ - 1) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 int
2진수
0b 또는 0B로 시작하고 0과 1로 구성
- 0b1011 → 11
- 0b10100 → 20
8진수
0으로 시작하고 0 ~ 7로 구성
- 013 → 11
- 0206 → 134
10진수
소수점이 없는 0 ~ 9로 구성
- 11
- 124
16진수
0x 또는 0X로 시작하고 0 ~ 9 와 A,B,C,D,E,F 또는 a,b,c,d,e,f 로 구성
- 0xb3 → 179
- 0x2a0f → 10767
long
기본적으로 컴파일러는 정수 리터럴을 int로 간주하므로 int 타입의 허용범위를 넘어갈 경우, long 타입임을 선언해야 함
- 정수 리터럴 뒤에 l이나 L을 붙이는데 소문자 l은 숫자 1과 비슷하므로 대문자 L을 사용
long var = 30000000000; // 컴파일 에러 long var2 = 30000000000L;
char
하나의 문자를 따옴표로 감싼 것을 문자 리터럴이라고 함
- 문자 리터럴은 유니코드로 변환돼 저장
char var1 = 'A'; // 유니코드 65 char var2 = 'B'; // 유니코드 66 char var3 = '가'; // 유니코드 44032 char var4 = '각'; // 유니코드 44033
유니코드는 정수이므로 char도 정수타입에 속합니다. 따라서 10진수나 16진수 형태로 유니코드를 저장할 수 있습니다.
char var1 = 65; // 'A' 의 10진수 유니코드 char var2 = 0x0041; // 'A' 의 16진수 유니코드 char var3 = 70000; // 컴파일 에러
주의
String 타입
큰 타옴표로 감싼 문자 또는 문자열은 유니코드로 변환되지 않습니다.
- String var1 = "A";
- String var2 = "AAA";
실수 타입
타입 메모리크기 저장되는 값의 허용 범위 (양수기준) 정밀도 (소수점 이하 자리) float 4 byte 32 bit (1.4 x 10⁻⁴⁵) ~ (3.4 x 10³⁸) 7자리 double 8 byte 64 bit (4.9 x 10⁻³²⁴) ~ (1.8 x 10³⁰⁸) 15자리 소수점이 있는 숫자 리터럴은 10진수 실수로 인식합니다
- 0.24, 3.14
알파벳 소문자 e 또는 대문다 E가 포함되어 있는 숫자 리터럴은 지수와 가수로 표현된 소수점이 있는 10진수 실수로 인식합니다.
- 5e2 → 5.0 x 10² = 500.0
- 0.12E-2 → 0.12 x 10⁻² = 0.0012
자바에서는 실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에 특별히 float 타입으로 저장하고 싶다면 리터럴 뒤에 f나 F를 붙여야 합니다.
float var1 = 3.14; // 컴파일 에러 double var2 = 3.14; double var3 = 3.14e-5; float var4 = 3.14F;
double이 float보다 더 많은 자리수를 표현하므로 더 정확합니다. 하지만 그 만큼 크기가 크므로 메모리가 제한적인 시스템에서는 유의하여 사용해야 합니다.
논리 타입
타입 메모리크기 범위 boolean 1 byte (대략) 8 bit true ~ false