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
해보기