자바의 자료형은 크게 두 가지, 기본 자료형(Primitive data type)과 참조 자료형(Reference data type)으로 나눌 수 있다.
1. 기본 자료형
자바의 기본 자료형은 총 8개로, 정수형, 소수형, 논리형으로 구분할 수 있다.
- 정수형 : byte, short, int, long, char
- 소수형 : float, double
- 논리형 : boolean
1.0 기본값
인스턴스 변수/클래스 변수/매개 변수 는 사용 전 초기화해주지 않으면 자동으로 기본값이 저장된다.
하지만 지역 변수는 기본값이 저장되지 않으므로 사용하기 전 꼭 초기화해주어야 한다. 사실 어떤 변수를 사용하더라도 초기화하는 습관을 들이는 것이 좋은데, javadoc에서도 기본값에 의존하는 것은 좋지 않은 프로그래밍 스타일이라고 설명한다.
1.1 정수형
자료형 | 크기 | 범위 | 기본값 |
byte | 1 byte (= 8 bit) | -2⁷ ~ 2⁷-1 | 0 |
short | 2 byte (= 16 bit) | -2¹⁵ ~ 2¹⁵-1 | 0 |
int | 4 byte (= 32 bit) | -2³¹ ~ 2³¹-1 | 0 |
long | 8 byte (= 64 bit) | -2⁶³ ~ 2⁶³-1 | 0L |
char | 2 byte | 0 ~ 2¹⁶-1 | '\u0000' |
- 문자의 유니코드 번호를 의미하는 char를 제외하고, 정수형 자료형의 범위를 잘 보면 [ - 2의 (비트수-1)제곱 ] ~ [ 2의 (비트수-1)제곱-1 ] 이라는 규칙을 찾아볼 수 있다.
- 컴퓨터는 2진수 기반이기 때문에 값의 범위는 2의 제곱수이고, 값의 가장 앞자리 비트가 숫자의 부호를 의미하는 것으로 약속했기 때문에 값의 범위는 (비트수)-1 제곱이다. (가장 앞 비트가 0이면 양수, 1이면 음수이다.) 또한 모든 자리 비트가 0일 경우 0을 의미하기 때문에 양수의 범위가 1 작다.
- 자바에서는 그냥 숫자를 사용하면 int로 생각하기 때문에, int의 범위를 벗어나는 숫자를 long에 저장할 때는 숫자 뒤에 L을 붙여서 숫자가 long형임을 표시할 수 있다. 숫자가 int 범위의 밖에 있을 때 L을 붙여주지 않을 경우 오류가 발생할 수 있다.
- char은 정수형으로 데이터를 저장하기 때문에, 아래 코드처럼 사용할 수도 있다.
int intValue = 'a';
char charValue = 97;
1.2 소수형
자료형 | 크기 | 범위 | 기본값 |
float | 4 byte ( 32 bit 부동소수점) | -3.40E+38 ~ 3.40E+38 | 0.0f |
double | 8 byte ( 64 bit 부동소수점) | -1.79E+308 ~ 1.79E+308 | 0.0d |
- 자바에서는 소수형 숫자 뒤에 f를 붙이지 않으면 double로 인식한다. 물론 소수형 숫자 뒤에 d를 붙여 double인 것을 명시해 줄 수도 있다.
- float과 double은 각각의 범위를 넘어서면 정확한 값이 나오지 않을 수도 있기 때문에, 정확한 계산이 요구될 때는 java.math.BigDecimal 이라는 클래스를 사용해야 한다.
1.3 논리형
자료형 | 크기 | 범위 | 기본값 |
boolean | 1 bit | true 또는 false | false |
2 참고문헌
자바의 신 Vol.1 기초 문법편 4장
'Language > Java' 카테고리의 다른 글
[Java] 형변환 (casting) (1) | 2023.12.27 |
---|---|
[Java] 변수(Variables) (0) | 2023.12.21 |
[Java] 클래스와 객체(Class and Object) (0) | 2023.12.21 |