[Java] 타입 변환

2024. 3. 7. 02:35BE/Java

데이터 타입이 다른 데이터 타입으로 변환하는 것을 의미한다.

묵시적 타입 변환, 명시적 타입 변환 두 종류가 있다.

 

묵시적 타입 변환

런타임 때 자동으로 타입이 변환되는 것을 의미한다.

크기가 작은 데이터 타입이 크기가 큰 데이터 타입에 저장될 때 발생한다.

byte < short < int < long < float < double 순이다.

public class Example {
    public static void main (String[] args) {
        byte small = 1;
        int big = small; // 자동 형 변환
    }
}

 

묵시적 타입 변환 예외

char 타입이 2바이트인데 음수를 저장할 수 없으므로 char 타입에 byte 타입을 대입하는 경우 컴파일러 에러가 발생한다.

public class Example {
    public static void main (String[] args) {
        byte var1 = 10;
        char var2 = var1; // 컴파일 에러
    }
}

 

연산식에서 묵시적 타입 변환

서로 다른 타입의 피연산자가 있는 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.

public class Example {
    public static void main (String[] args) {
        int var1 = 3;
        float var2 = 3.14F;

        System.out.println(var1 + var2);
    }
}

 

명시적 타입 변환

크기가 큰 타입에서 작은 크기의 타입으로 자동 타입 변환을 할 수 없다.

명시적으로 캐스팅 연산자 ( ) 로 작성해야지 타입을 변환 할 수 있다.

public class Example {
    public static void main (String[] args) {
        int var1 = 100;
        byte var2 = (byte) var1;
    }
}

 

더 큰 범위의 값을 다룰 수 있는 타입에서 보다 작은 데이터 타입으로 강제 타입 변환을 하는 경우 데이터 손실이 발생할 수 있다.

 

명시적 타입 변환 시 주의할 점으로 입력된 값의 손실이 발생하지 않는 선에서 진행해야 한다.

정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피해야 한다.

public class Example {
    public static void main (String[] args) {
        int num1 = 1234567890;
        int num2 = 1234567890;
        float num3 = num2;

        num2 = (int) num3; // 데이터 손실 발생
        System.out.println(num1);
        System.out.println(num2);
    }
}

 

 

 

728x90

'BE > Java' 카테고리의 다른 글

[Java] 조건문과 반복문  (0) 2024.03.08
[Java] 연산에 대해  (0) 2024.03.07
[Java] 데이터 타입  (0) 2024.03.07
[Java] 변수  (0) 2024.03.06
[Java] 자바 개발 환경 구축하기  (0) 2024.03.01