자바의 자료형은 크게 기본형(primitive type)과 참조형(reference type)으로 나눌 수 있습니다.
기본형은 다음과 같은 특징이 있습니다.
타입 | 설명 | 크기(bit) | 범위 |
---|---|---|---|
char | 16비트 유니코드(Unicode) 문자 데이터 | 16 | ‘\u0000’ ~ ‘\uFFFF’ |
boolean | 참/거짓 값 | 8 | true 또는 false |
byte | 부호를 가진 8비트 정수 | 8 | -128 ~ +127 |
short | 부호를 가진 16비트 정수 | 16 | -32,768 ~ +32,767 |
int | 부호를 가진 32비트 정수 | 32 | -2,147,483,638~+2,147,483,647 |
long | 부호를 가진 64비트 정수 | 64 | -9223372036854775808~+9223372036854775807 |
float | 부호를 가진 32비트 부동 소수점 | 32 | -3.402932347e+38~+3.40292347e+38 |
double | 부호를 가진 64비트 부동 소수점 | 64 | -179769313486231570e+308~1.79769313486231570e+08 |
long 타입을 사용을 한다면 가장 큰값은 9223372036854775807입니다. 그렇기 때문에 이보다 정말 큰 숫자가 필요하다면 BigInteger을 사용해야 합니다.
BigInteger는 일반적인 오퍼레이터 연산자는 사용할 수 없고, .add(), .subtract(), .multiply(), .divide() 메소드가 제공이 되고, 매개변수 또한 BigInteger를 받습니다.
참조형은 기본형을 제외한 모든 타입으로, 기본적으로 java.lang.Object를 상속 받습니다. class, String, interface, array, EnumType, map, hash등이 여기에 속합니다.
기본적으로 기본형은 stack 영역에 저장이 되지만 참조형은 stack 영역에 메모리 주소를 저장하며, heap 영역에 실제 값을 저장한다는 특징을 가지고 있습니다.
데이터 타입을 다른 데이터 타입으로 변환하는 것을 말합니다.
말 그래도 자동으로 타입변환이 일어나는 것을 의미합니다. 자동 타입 변환은 값의 허용범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생합니다.
byte < short < int < long < float < double
큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없습니다.
마치 큰 그릇에 가득 채운 물을 작은 그릇 안에 모두 넣을 수 없는 것과 동일한 이치입니다. 하지만 큰 그릇의 물을 작은 그릇 크기로 나눠서 한 부분만 작은 그릇에 넣은 것은 가능합니다.
이와 같이 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것을 강제 타입 변환(캐스팅:casting)이라고 합니다.