블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
형 변환
변수와 값이 서로 다른 자료형의 값을 가지는 경우, 형 변환이 발생함
형 변환에는 2가지가 있다
- 묵시적 형 변환
Implicit type conversion
- 명시적 형 변환
Explicit type conversion
묵시적 형 변환 Implicit type conversion
프로그래머가 따로 명시할 필요 없이 알아서 형 변환이 일어난다.
하지만, 아래와 같은 조건이 존재한다.
1. 작은 수에서 큰 수로 형 변환이 일어남
(예시)
short
(2byte) -> int
(4byte)
int
(4byte) -> long
(8byte)
// 작은 수에서 큰 수로 형 변환
byte byteNum = 1;
int intNum = byteNum; // 형 변환 발생
System.out.println(byteNum);
System.out.println(intNum);
1
1
2. 정밀하지 않은 수에서 정밀한 수로 형 변환이 일어남
(예시)
float
(4byte) -> double
(8byte)
// 정밀하지 않은 수에서 정밀한 수로 형 변환
int intNum = 10;
float floatNum = intNum; // 형 변환 발생
System.out.println(intNum);
System.out.println(floatNum);
10
10.0
만약, 아래와 같이 한다면 컴파일 오류가 발생한다.
int a = 10;
byte b = a; // 컴파일 오류 (큰 수에서 작은 수를 대입 했기 때문에)
double d = 10.2345;
float f = d; // 컴파일 오류 (정밀한 수를 정밀하지 않은 수에 대입 했기 때문에)
명시적 형 변환 Explicit type conversion
위 예시와 같이 오류가 발생하는 경우, 명시적 형 변환을 사용한다.
명시적 형 변환을 할 때는 괄호와 타입을 적는다. (아래 예제 확인)
1. 큰 수를 작은 수로 형 변환
int 타입을 byte 타입으로 형 변환하기 위해 앞에 (byte)
를 붙여준다.
int iNum = 100;
byte bNum = (byte) iNum; // int를 byte로 형 변환 하기 위해 앞에 명시를 해줌
System.out.println(iNum);
System.out.println(bNum);
100
100
2. 정밀한 수를 정밀하지 않은 수로 형 변환
double을 float로 형 변환하기 위해 앞에 (float)
를 붙여준다
double dNum = 1.2;
float fNum = (float) dNum; // double을 float로 형 변환 하기 위해 명시 해줌
System.out.println(dNum);
System.out.println(fNum);
1.2
1.2
다른 글
2021/02/02 - [Language/JAVA] - [Java 기초] 자바의 자료형 Data Type (Primitive Type, Reference Type)
2021/02/03 - [Language/JAVA] - [Java 기초] 상수와 리터럴 (Constant & Literal)
반응형
'Language > JAVA' 카테고리의 다른 글
JVM과 JVM 아키텍처 (Class Loader, Runtime Data Area, Execution Engine) (0) | 2021.03.07 |
---|---|
Java - 연산자의 종류 (증감/부호/산술/논리/비교/대입 연산자) (0) | 2021.02.03 |
Java - 상수와 리터럴 (Constant & Literal) (0) | 2021.02.03 |
Java - 자바의 자료형 Data Type (Primitive Type, Reference Type) (0) | 2021.02.02 |
Java - 문자 자료형과 아스키코드, 유니코드(UTF-8, UTF-16) (0) | 2021.02.02 |