본문 바로가기
프로그래밍 언어/JAVA

[Java] 변수 타입을 바꿔보자 - 형변환

by 티옌.liy 2022. 11. 6.

결론부터 말하면

boolean 논리형은 형변환을 할 수 없고

명시적 형변환은 변환 타입을 직접 명시하여 선택할 수 있고

자동 형변환은 기존 값을 최대한 보존 가능한 타입으로 변경된다. 


1. 형변환은 무엇인가?

 

사전적 정의는

변수 타입을 다른 타입으로 변환하는 것인데

 

데이터를 다루다보면

기존의 정수형을 실수로 변경하거나

문자열을 문자형으로 1자씩 나누는 등

변수 타입을 변경할 경우가 생기는데

이럴때 사용하는게 형변환(casting) 이다.

 

 

2. 명시적 형변환 사용법

 

방법은 아주 간단한데

자신이 변경하려는 타입을

기존 변수 왼쪽에 명시해주면 된다.

 

보통 신체 검사 시 키의 값은 실수형으로 표기되는데

우리가 키가 몇이냐 그러면 정수만 말하지 않는가

이처럼 아래 코드는 float 타입 변수를 int로 형변환 하는 예시다.

 

예시 코드
float my_height = 180.3
int simple_my_height = (float)my_height
실행 결과
180

 

논리형 타입인 boolean은 제외한

정수, 실수, 문자형 같은 기본형 타입 끼리는

원하는대로 바꿀 수 있다.

 

단, 기본형과 참조형 타입끼리는

형변환을 할 수 없다.

 

 

3. 형변환 시 주의점

형변환 시 반드시 주의할 것이 있는데

다른 타입으로 변환하는 과정에서

기존의 값이 소실되거나 변경될 수 있다.

대부분 큰 타입에서 작은 타입으로 변경 시 발생하는데

 

double(8byte)  ->  float(4byte)

int(4byte) -> short(2byte)

 

위 예시처럼 표현 가능한 값이 작아질 때

값 손실이 발생할 수도 있다.

 

예를 들어

실수형 float 타입 3.1415 값을

정수형 int 타입으로 변환하면

값이 3이 되면서 소수점은 버려진다.

 

 

4. 자동 형변환

 

 자동 형변환은 컴파일러가 자동으로 변환하는 것인데

기준은 문자형 -> 정수형 -> 실수형 이다

문자보다는 정수가 표현이 세밀하고

정수보다는 실수가 더 세밀하지 않은가

 

 

예를 들어

타입은 float로 선언하고 값은 정수형을 넣으면

출력은 실수형으로 표현한다

 

예시 코드
float my_market_point = 120;
System.out.println(my_market_point)
실행 결과
120.0

 

또 다른 예시로

연산 과정에서 변수의 타입이 다르면

자동으로 형변환이 발생하는데

이를 ' 산술 변환 ' 이라 한다.

 

예시 코드
int first_number = 1
float second_number = 2.2

System.out.println(first_number + second_number)
실행 결과
3.2

 

int 타입 변수가 컴파일러에 의해 자동으로 형변환되어

float 타입으로 선 변환 후, 연산한 결과를 출력한다.

댓글