6. 리터럴의 타입과 접두사 , 접미사
접두사 , 접미사는 대소문자 구분 x
파란줄의 접미사 정수형 long 과 실수형 float 만 신경쓰면 된다
정수형에서 byte,short 은 int 로 같이 묶여져 따로 접미사를 쓰지 않고 long 만 접미사 L 붙여주면 되고 ,
실수형에서 보통 double 의 d 는 생략되고 float 의 f 만 접미사 쓰는게 관례
boolean 타입 : true 또는 false 만 저장가능
boolean power = true;
char 타입 : 하나의 문자만 저장가능
char ch = 'A'; // 하나의 문자는 홑따옴표 ' ' 로
String 타입 : 여러 문자 저장가능
String str = "ABC"; // 여러 문자는 큰따옴표 " " 로
'\n' : 줄 바꿈 문자 . 하나의 문자 . ' ' 로 되어있는걸 봐도 알 수 있음
byte 타입 : 접미사가 없기에 int 타입을 사용 . 즉 , 접미사 x
대신 byte 타입 범위 안에 저장할 수 있는 값이여야함
범위 : -128~127 ( 범위 벗어나면 에러 )
byte b = 127; // literal 127(127 값 자체 ) 의 타입은 int
int 타입 : 앞에 접두사를 붙여서 진수를 나타낼 수 있음
0b 가 접두사로 붙으면 2 진수 0b0101
한계값이 약 20 억까지만 사용가능 . 이후의 더 큰 값은 long처리해야함
int i = 100; // 10 진수
int oct = 0100; // 8 진수
int hex = 0x100; // 16 진수
long 타입 : int 의 한계값이 넘어서는 수 약 20 억 이후부터 써야하는 정수타입
long 타입 쓸 때 접미사 L 을 안붙여도 괜찮지만 , int 의 한계값을 넘는 약 20 억부터는 접미사 L 필수
long 1 = 10_000_000_000L; // 0 이 10 개라 100 억
long 1 = 1 100; // ok
float 타입 : 실수 . 접미사 필수
float f = 3.14f;
double 타입 : 실수 . 접미사 d 생략가능
double d = 3.14d; // ok
double d = 3.14; // ok
10. → 10.0 : 10.0 에서 소수점 뒷자리 0 이 생략된 의미 . 접미사 없으니 double 타입
.10 → 0.10 : 0.10 에서 앞 0 이 생략된 의미 . 접미사 없으니 double 타입
10f → 10.0f : 10f 와 10.0f 와 같은 의미
le3 → 1000.0 : 실수형 . 접미사 없으니 double 타입
기호 e 는 10 의 n 제곱을 의미 . 값이 1000 이지만 기호 e 는 실수형에서 쓰임
7.변수와 리터럴의 타입 불일치
1) 범위가 ' 변수 > 리터럴 ' 인 경우 , ok
(그릇 ) ( 물건 )
int i = 'A'; // int > char
long 1 = 1 123; // long > int
double d = 3.14f; // double > float
2) 범위가 ' 변수 < 리터럴 ' 인 경우 , 에러
int i = 30_0000_0000; // int 의 범위 ( 약 20 억 ) 벗어남 . error
long 1 = 1 3.14f ; // long < float : 실수형이 정수보다 넓다 . error
( 롱타입 8byte, 플로트타입 4byte)
float f = 3.14; // float < double 더블이 플로트보다 크다 . error
3)byte, short 변수에 int 리터럴 저장가능
byte b = 100; // ok ( 단 , byte 범위 -127~127 사이에 속해야함
byte b = 128; // error
해보기