리터럴의 접두사와 접미사.. 접미사는 대소문자 구별안함
정수형 100L -> long타입 20 int타입
실수형 1.4f -> float타입, d ->double타입(잘 안쓰임..생략가능)
boolean power = true; // 불린타입은 트루,폴스만 가능
char c = 'A'; //문자형 char 타입 ''
String a = "hello"; //문자열 타입 ""
byte b = 127; //int타입 byte타입의 범위: -128~127
float f = 3.14f; //플로트형이면 반드시 f 붙여줘야함
double d = 3.14; //double타입이면 d 생략가능
// \n 줄자꿈 문자(개행문자)
// 10. = 10.0
// .10 = 0.10
// 10f = 10.0f
// 1e3 e^3는 10^3을 의미, 기호 e는 실수형에서 사용된다.
// 실수형인데 접미사가 생략되어 있으니까 double타입이라서 le3 = 1000.0d
변수와 리터럴의 타입 불일치
1. 범위가 변수>리터럴인 경우 ok
int i = 'A'; 문자 A는 유니코드로 65라서..65는 int의 범위에 들어감
int > char
* long l = 123; 123은 인트타입인데 더 범위가 넓은 long타입에 넣으니 문제없음
long > int
double d = 3.14f double > float
2.범위가 변수<리터럴인 경우, 에러
long l = 3.14f long < float
long타입(정수형)은 8byte,float타입(실수형)은 4byte라서 될거같지만
실수형은 정수형보다 저장범위가 더 넓어서 에러 발생
float f = 3.14; float < double 이라서 안됨
그냥 3.14써있으면 더블타입이니까 더 큰 더블타입을 플로트타입에 넣을 수 없다.
3.byte,short 변수에 int 리터럴 저장가능
바이트와 숏타입의 리터럴은 없다 그래서 int리터럴을 사용한다
byte b = 100; ok. byte의 범위 -128~127
byte b = 128; error. byte의 범위를 벗어남
boolean power2 = false;
System.out.println(power2);
byte bb = 127;
int oct = 010; //8진수, 10진수로 8
int hex = 0x10; //16진수, 10진수로 16
System.out.println(oct);//println메소드는 값을 10진수로만 출력한다
System.out.println(hex);
long l = 1000_000_000; //int타입의 값을 long타입에 저장함
long l2 = 10_000_000_000L; //인트범위 벗어나면 long타입되서 L 붙여야함
double dd = 3.14f; //더 작은 플로트타입을 더 큰 더블타입에 대입했으니 가능.