1. 형 변환
변수와 값이 서로 다른 자료형의 값을 가지는 경우, 형 변환이 발생함
형 변환에는 2가지가 있다
- 묵시적 형 변환
Implicit type conversion
- 명시적 형 변환
Explicit type conversion
2. 묵시적 형 변환 Implicit type conversion
프로그래머가 따로 명시할 필요 없이 알아서 형 변환이 일어난다.
하지만, 아래와 같은 조건이 존재한다.
2.1. 1. 작은 수에서 큰 수로 형 변환이 일어남
(예시)
short
(2byte) -> int
(4byte)
int
(4byte) -> long
(8byte)
<java />
// 작은 수에서 큰 수로 형 변환
byte byteNum = 1;
int intNum = byteNum; // 형 변환 발생
System.out.println(byteNum);
System.out.println(intNum);
<java />
1
1
2.2. 2. 정밀하지 않은 수에서 정밀한 수로 형 변환이 일어남
(예시)
float
(4byte) -> double
(8byte)
<java />
// 정밀하지 않은 수에서 정밀한 수로 형 변환
int intNum = 10;
float floatNum = intNum; // 형 변환 발생
System.out.println(intNum);
System.out.println(floatNum);
<java />
10
10.0
만약, 아래와 같이 한다면 컴파일 오류가 발생한다.
<java />
int a = 10;
byte b = a; // 컴파일 오류 (큰 수에서 작은 수를 대입 했기 때문에)
double d = 10.2345;
float f = d; // 컴파일 오류 (정밀한 수를 정밀하지 않은 수에 대입 했기 때문에)

3. 명시적 형 변환 Explicit type conversion
위 예시와 같이 오류가 발생하는 경우, 명시적 형 변환을 사용한다.
명시적 형 변환을 할 때는 괄호와 타입을 적는다. (아래 예제 확인)
3.1. 1. 큰 수를 작은 수로 형 변환
int 타입을 byte 타입으로 형 변환하기 위해 앞에 (byte)
를 붙여준다.
<java />
int iNum = 100;
byte bNum = (byte) iNum; // int를 byte로 형 변환 하기 위해 앞에 명시를 해줌
System.out.println(iNum);
System.out.println(bNum);
<java />
100
100
3.2. 2. 정밀한 수를 정밀하지 않은 수로 형 변환
double을 float로 형 변환하기 위해 앞에 (float)
를 붙여준다
<java />
double dNum = 1.2;
float fNum = (float) dNum; // double을 float로 형 변환 하기 위해 명시 해줌
System.out.println(dNum);
System.out.println(fNum);
<java />
1.2
1.2
4. 다른 글
2021/02/02 - [Language/JAVA] - [Java 기초] 자바의 자료형 Data Type (Primitive Type, Reference Type)
[Java 기초] 자바의 자료형 Data Type (Primitive Type, Reference Type)
자바의 자료형 Java의 자료형에는 기본형( Primitive Type ), 참조형( Reference Type ) 2가지가 존재한다. 자료형은 다른 말로 Data Type이라 부르기도 함 기본형 Primitive Type 자바에서 기본적으로 제공해주..
memostack.tistory.com
2021/02/03 - [Language/JAVA] - [Java 기초] 상수와 리터럴 (Constant & Literal)
[Java 기초] 상수와 리터럴 (Constant & Literal)
상수 (Constant) 변하지 않고 고정된 값 오해할 수 있는게 반드시 숫자일 필요는 없다. 숫자, 문자, 문자열 등 값이 변하지 않는다면 모두 상수 final int NUM = 1; // 정수형 상수 final double PI = 3.14; // 실..
memostack.tistory.com
'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 |