기본(원시) 타입
값의 종류 | 기본 타입 | 메모리 사용 크기 | 값의 범위 | |
정수 | byte | 1 byte | 8bit | -2^7 ~ 2^7 -1 |
char | 2bye | 16bit | 0 ~ 2^16 - 1 | |
short | 2byte | 16bit | -2^15 ~ 2^15 -1 | |
int | 4byte | 32bit | -2^31 ~ 2^31 - 1 | |
long | 8byte | 64bit | -2^63 ~ 2^63 - 1 | |
실수 | float | 4byte | 32bit | (+/-)1.4E-324 ~ (+/-) 3.4028235E38 |
double | 8byte | 64bit | (+/-)4.9E-324 ~ (+/-)1.7976931348623157E308 | |
논리 | boolean | 1byte | 8bit | true, false |
char 타입을 제외한 정수타입의 범위는 -2^(n-1) ~ 2^(n-1)-1 이다.
n-1 이 되는 이유는 최상위 비트에 부호에 대한 값이 저장되기 때문이다.
최상위 비트가 0이면 양수, 1이면 음수이다.
자바에서 연산은 4byte로 저장되는 int형태로 진행되고 결과 역시 int형태 이기 때문에
용량에 지장이 없다면 웬만하면 byte, short타입보다는 int타입을 이용하자.
타입 변환
- 자동 타입 변환(Promotion)
작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생
- 강제 타입 변환(Casting)
강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개서 저장
long longValue = 300;
int intValue = (int) longValue;
long 타입 형태의 변수에 저장된 값 300은 int타입이 가질 수 있는 수의 범위에 포함되기 때문에
int타입으로 강제 타입 변환을 해 읽어올 수 있다.
강제 타입 변환시 주의사항
- 값의 손실이 발생하면 안된다.
- 정밀도 손실을 피해야 한다.
정밀도 손실의 경우 정수타입을 실수타입으로 변환할 때 발생한다.
int 값을 손실없이 float타입의 갑승로 변환하려면, 가수 23비트로 int값을 표현할 수 있어야한다.
표현할 수 없다면 근사치로 변환되기 때문에 타입 변환을 하며 오차가 발생한다.
연산식에서의 자동 타입 변환
연산은 기본적으로 같은 타입의 피연산자 간에만 수행된다.
그렇기 때문에 서로 다른 타입의 피연산자가 있으면 피연산자중 크기가 큰 타입으로 자동 변환된다.
'JAVA(SPRINGBOOT)' 카테고리의 다른 글
[SPRING JPA] ORM, JPA, Hibernate (0) | 2022.09.13 |
---|---|
API, WAS, HTTP, RESTful API, CORS (0) | 2022.08.10 |
ORM, SQL, MVC (0) | 2022.08.08 |
IoC, DI, Bean (0) | 2022.07.31 |
[JAVA] 변수 (0) | 2022.07.20 |