java의 자료형을 표로 정리하면 아래와 같습니다.
정수형 | 문자형 | 실수형 | 논리형 | |
1바이트 | byte | boolean | ||
2바이트 | short | char | ||
4바이트 | int | float | ||
8바이트 | long | double |
이 자료형중 float형과 Long형을 이용할때 리터럴 맨 끝에 F(f), L(l)을 붙입니다.
//long lNum = 12345678900; 오류
long lNum = 12345678900L;
float fNum = 0.123456F;
이렇게 붙이는 이유는
java에서 정수는 항상 int형 타입으로 잡히고 실수는 double형 타입으로 잡히기 때문입니다.
즉, long lNum = 12345678900;
이 구문에서의 자바는 리터럴 12345678900를 int 자료형에 집어넣으려고 했지만
12345678900 은 int가 담을 수 있는 범위를 벗어납니다.
그래서 끝에 식별자 L 또는 l 을 붙여 java가 8바이트에 집어넣도록 알려준다고 생각하면 될 것 같습니다.
그렇다면
byte a = 1;
이 경우에서 리터럴 1 또한 int에 대입되기 때문에 오류가 생겨야 하지 않을까 하는 생각이 들 수 있는데요.
java에는 변환모듈이 달려 해결이 가능하다고 합니다.
byte와 short는 저장 목적이기에 자동으로 형 변환이 된다고 하네요.
'Java > Java' 카테고리의 다른 글
상속(Java) (0) | 2022.04.27 |
---|---|
static 제어자 (Java) (0) | 2022.04.25 |
클래스 접근 지정자와 생성자 접근 지정자(java) (0) | 2022.04.20 |
가변 길이 배열 입력매개변수 메서드 (Java) (0) | 2022.04.11 |
터미널을 이용한 Java의 동작원리 (0) | 2021.12.28 |