2-5. 형 변환
✅ 형 변환 (Type Conversion)
▶ 특정 자료형을 변환하는 과정을 의미한다.
자료 출처: Do it! 자바프로그래밍 입문 (이지스퍼블리싱)
▶ 화살표 방향으로 형 변환을 하는 경우,
자동으로 자료형이 변환되는 '묵시적 형 변환 (Implicit Conversion)'이 일어난다.
▶ 화살표 반대방향으로 형 변환을 하는 경우,
강제로 자료형을 변환하는 '명시적 형 변환 (ExplicitConversion)'이 일어난다.
▶ 실수가 정수보다 표현 범위가 크고 정밀하기 때문에, long형이 8바이트 자료형임에도 불구하고 4바이트 자료형인 float형보다 단계가 낮다.
✅ 묵시적 형 변환이 일어나는 경우
(1) 바이트 크기가 작은 자료형에서, 큰 자료형으로 대입하는 경우
(2) 덜 정밀한 자료형에서, 더 정밀한 자료형으로 대입하는 경우
(3) 연산 중에 자동으로 변환되는 경우
package type_conversion;
public class ImplicitConversion {
public static void main(String[] args) {
// 바이트 크기가 작은 자료형에서, 큰 자료형으로 대입하는 경우
byte bNum1 = 10;
short sNum1 = bNum1;
System.out.println(bNum1);
System.out.println(sNum1);
// 덜 정밀한 자료형에서, 더 정밀한 자료형으로 대입하는 경우
int iNum1 = 12345;
float fNum1 = iNum1;
System.out.println(iNum1);
System.out.println(fNum1);
// 연산 중에 자동으로 변환되는 경우
int iNum2 = 10;
float fNum2 = 20.0F;
double dNum = iNum2 + fNum2;
System.out.println(dNum);
}
}
[실행 결과]
10
10
12345
12345.0
30.0
▶ 세 번째 경우에서, 두 번의 묵시적 형 변환이 발생한다.
(1) iNum2 + fNum2 연산에서 int형이 float형으로 형 변환
(2) float형이 된 (iNum2와 fNum2의) 합이 double형으로 형 변환
✅ 명시적 형 변환이 일어나는 경우
(1) 바이트 크기가 큰 자료형에서, 작은 자료형으로 대입하는 경우
(2) 더 정밀한 자료형에서, 덜 정밀한 자료형으로 대입하는 경우
package type_conversion;
public class ExplicitConversion {
public static void main(String[] args) {
// 바이트 크기가 큰 자료형에서, 작은 자료형으로 대입하는 경우
int iNum = 200;
short sNum = (short)iNum;
byte bNum = (byte)iNum;
System.out.println(iNum);
System.out.println(sNum);
System.out.println(bNum); /* 자료 손상 */
// 더 정밀한 자료형에서, 덜 정밀한 자료형으로 대입하는 경우
double dNum = 3.141592;
int iNum2 = (int)dNum;
System.out.println(dNum);
System.out.println(iNum2); /* 자료 손상 */
}
}
[실행 결과]
200
200
-56
3.141592
3
▶ 프로그래머가 반환할 자료형을 명시적으로 작성해야 한다.
▶ 명시적 형 변환은 자료 손상이 발생할 수 있으므로 주의해야 한다!
Author And Source
이 문제에 관하여(2-5. 형 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@codinghoon/java-basic-2-5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)