자바에서는 변수를 선언할 때 주어지는 타입에 따라 변수에 저장할 수 있는 값의 종류와 허용 범위가 달라진다.
Java Data Type
자바에는 기본형(Primivite Type)과 참조형(Reference Type)이 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Java Data Type
ㄴ Primitive Type
ㄴ Boolean Type(boolean)
ㄴ Numeric Type
ㄴ Integral Type
ㄴ Integer Type(short, int, long)
ㄴ Floating Point Type(float, double)
ㄴ Character Type(char)
ㄴ Reference Type
ㄴ Class Type
ㄴ Interface Type
ㄴ Array Type
ㄴ Enum Type
ㄴ etc.
|
cs |
이번 포스트에서는 기본형에 관해 알아보고, 참조형은 진도가 나간 후에 정리하겠다.
기본형(Primitive Type)
1
2
3
4
5
6
7
8
9
10
|
Type Bits Range of Values
----------------------------------------------------------------------------------------
byte 8bits -2^7 ~ 2^7-1 (-128 ~ 127)
short 16bits -2^15 ~ 2^15-1 (-32768 ~ 32767)
int 32bits -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647)
long 64bits -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807)
float 32bits 0x0.000002P-126f ~ 0x1.fffffeP+127f
double 64bits 0x0.0000000000001P-1022 ~ 0x1.fffffffffffffP+1023
char 16bits \u0000 ~ \uffff (0 ~ 2^15-1)
boolean 1bit true, false
|
cs |
기본 타입에는 정수 타입인 byte, char, short, int, long이 있고
실수 타입에는 float, double
논리 타입에는 boolean이 있다.
타입 변환
타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다. 만약 두 변수의 타입이 다르다면 어떻게 변환시켜야할까?
타입 변환에는 자동 타입 변환(Promotion)과 강제 타입 변환(또는 캐스팅 Casting)이 있다.
자동 타입 변환(Promotion)
자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다.
다음은 기본 타입을 허용 범위 크기순으로 정리한 것이다.
byte < short < int < long < float < double
1
2
3
4
5
6
7
8
9
|
byte byteValue = 10;
int intValue = byteValue; // Promotion됨
long longValue = 5000000000L;
float floatValue = longValue; // 5.0E9f로 저장됨
double doubleValue = longValue; // 5.0E9로 저장됨
char charValue = 'A';
int intValue = charValue; // 65가 저장됨
|
cs |
char 타입의 경우 int 타입으로 자동 타입 변환되면 유니코드 값이 int 타입에 저장된다.
* 자동 타입 변환에서의 예외
1
2
|
byte byteValue = 65;
char charValue = byteValue; // 컴파일 에러
|
cs |
byte 타입은 char 타입보다 허용 범위가 작지만, 음수 범위를 포함하고 있기 때문에 char 타입으로 자동 타입 변환 될 수 없어 컴파일 에러가 뜬다.
강제 타입 변환(Casting)
큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠 저장하는 것을 강제 타입 변환이라고 한다. Casting은 캐스팅 연산자 괄호 (작은 허용 범위 타입)을 사용한다.
1
2
3
4
5
6
7
8
|
int intValue = 10;
byte byteValue = (byte)intValue; // 강제 타입 변환
intValue = 65;
char charValue = (char)intValue; // "A"로 저장
double doubleValue = 3.14;
intValue = (int)doubleValue; // 정수 부분 3만
|
cs |
'개발 관련 > Java' 카테고리의 다른 글
[혼공자] java - 배열(Array) (0) | 2022.04.24 |
---|---|
[혼공자] java - 참조 타입(Reference Type) (0) | 2022.04.24 |
[혼공자] java 메모리 사용 영역(Runtime Data Area) (0) | 2022.04.24 |
[혼공자] 자바 프로그램 실행 과정 (0) | 2022.04.24 |
[혼공자] java란? (0) | 2022.04.24 |