자바 프로그래밍, 형 변환 이야기

반응형
    728x90
    반응형
    int iNum = 20;
    float fNum = iNum;
    double dNum;
    dNum = fNum + iNum;

    이번 포스팅에선 형 변환에 대해 알아보자

    1. 형 변환이란?

    각기 다른 자료형의 값을 연산(계산) 한다고 생각해보자

    int 형 숫자 1과 double 형 3.14를 더하기 한다고 하면

    서로 다른 자료형을 같은 자료형으로 바꿔준 후 계산해야한다

    이렇게 서로 다른 자료형을 같은 자료형으로 바꿔주는 작업을

    '형 변환' 이라고 한다.

     

    2. 묵시적 형 변환

    바이트 크기가 작은 자료형에서 큰 자료형으로 대입

    byte bNum = 10;
    int iNum = bNum;

    위의 경우 bNum의 크기는 1바이트이고

    iNum의 크기는 4바이트이므로 자료 손실 없이

    bNum에 들어있는 모든 값이 iNum에 저장된다

    덜 정밀한 자료형에서 더 정밀한 자료형으로 대입

    int = iNum2 = 20;
    float fNum = iNum2;

    int형 보다 float형이 더 정밀하게 데이터를 표현할 수 있으므로

    실수형인 float형으로 변환 된다

    연산 중에 자동 변환

    int iNum = 20;
    float fNum = iNum;
    double dNum;
    dNum = fNum + iNum;

    예시의 경우 두번의 형 변환이 일어난다.

    int형에서 float 형으로 한번, 다시 float형에서 double 형으로 한번

    덜 정밀한 수에서 더 정밀한 수로, 바이트 크기가 작은 수에서 큰수로

    변환 되는 경우 자동으로 형 변환이 일어난다.

     

    3. 명시적 형 변환

    바이트 크기가 큰 자료형에서 작은 자료형으로 대입

    int iNum = 10;
    byte bNum = (byte)iNum;

    강제로 형을 바꾸려면 바꿀 형을 괄호를 써서 명시해야 한다.

    byte형은 1바이트로 int형보다 크기가 작기때문에 자료 손실이 발생할 수 있다.

    따라서 변환할 자료형을 명시적으로 써 주어야 하며 이를 [강제 형 변환] 이라고 한다.

    더 정밀한 자료형에서 덜 정밀한 자료형으로 대입

    double dNum = 3.14;
    int iNum2 = (int)dNum;

    실수형에서 정수형으로 값이 대입되는 경우

    형 변환을 명시적으로 해주어야 한다.

    이 경우 소수점 이하 부분은 생략되고

    정수 부분만 대입 된다.

    연산 중 형 변환

    package chapter2;
    
    public class ExplicitConversion {
    
    	public static void main(String[] args) {
    		double dNum1 = 1.2;
    		float fNum2 = 0.9F;
    
    		int iNum3 = (int) dNum1 + (int) fNum2;
    		int iNum4 = (int) (dNum1 + fNum2);
    
    		System.out.println(iNum3);
    		System.out.println(iNum4);
    	}
    
    }

    위 코드는 연산 중 형 변환 예시 코드이다.

    iNum3은 1 + 0이 되어 1이 출력되고

    iNum4는 1.2+0.9의 결과 값을 int로 형 변환 하기 때문에

    출력되는 값은 2.1에서 0.1을 생략한 2가 된다.

    728x90
    반응형

    댓글

    Designed by JB FACTORY