memostack
article thumbnail
블로그를 이전하였습니다. 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)

 

[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

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!