Java int, long, float, double

김명일·2022년 6월 8일
0

코딩테스트 준비를 하다 자꾸 에러가 났는데, 원인은 Int의 오버플로로 인한 문제였다. 무지의 먹방 라이브

Primitive Data Type

primitive data type은 자바에서 기본적으로 제공하는 타입으로 기본값이 있어 Null이 되지 않는다.

typememorydefaultrange
byte1byte0-128 ~ 127
short2byte0-32,768 ~ 32,767 (약 3만)
int4byte0-2,147,483,648 ~ 2,147,483,647 (-2^31 ~ 2^31 - 1)(약 21억)
long8byte0L-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-2^63 ~ 2^63 - 1)
float4byte0.0F1.4 * 10^-45 ~ 3.4 * 10 ^ 38
double8byte0.04.9 * 10^-324 ~ 1.7 * 10^308
boolean1bytefalsetrue, false
char2byte'\u0000'0 ~ 65,535

정밀한 계산을 위해선 float과 double보단 BigDecimal을 사용하는 것이 좋다고 한다.

참조 타입

Primitive Type을 제외한 모든 타입들이 참조 타입이다. Primitive Type과는 달리 Null이 할당될 수 있으므로 주의해야 한다.

자바에서는 실제 메모리 주소를 참조하는 것(다이렉트 레퍼런스)가 아닌 참조하는 대상의 이름을 참조한다(심볼릭 레퍼런스).
(어떤 장점이 있는 것일까?)

int를 wrapping한 Integer 등 Primitive type을 랩핑한 클래스들이 있다. 랩핑 클래스에는 여러가지 메서드들이 포함되어 있어, 사용성이 좋다.
하지만 랩핑 클래스에서 원시타입으로 변경(언박싱)하는 과정이 필요하기 때문에, 접근속도가 조금 느려질 수 있고, 메모리 측면에서도 원시타입이 유리하다.
(하지만 큰 차이는 없지 않을까? 싶다.)

JVM과 관련된 이야기들이 많이 있는데 자바에 대해 한번 공부해봐야겠다.

profile
주니어 백엔드 🐶🦶🏻📏

0개의 댓글