본문 바로가기

Java

자료의 형 변환 - 강제형변환

특정 자료형의 데이터를 다른 자료형으로 표시해야 할 때가 있다.

 

어떤 경우에는 자연스럽게 표시가 되지만

경우에 따라서는 데이터가 손실되거나 오류가 발생할 수 도 있다.

package ch02;

public class TypeConversion {
    /*
    형 변환이란
    데이터의 타입을 다른 타입으로 변경하는 것이다.
    자동 형 변환, 강제 형 변환
     */

    // entry
    public static void main(String[] args) {

        int intDataBox = 50;
        double doubleDataBox = intDataBox;
        /*
        자연스럽게 형 변환이 됐다.
        작은 상자 int 에서 큰 상자 double 로 옮겼기 때문
         */

        System.out.println(intDataBox);
        System.out.println(doubleDataBox);

        // 강제 형 변환 확인하기
        final double PI = 3.14159;
        // int intBox = PI; // 컴파일 시점 오류 발생

        /*
        개발자는 컴파일러에게 이렇게 명령할 수 있다.
        "컴파일러야 괜찮으니까 그냥 넣어"
        "데이터 손실이 발생할 수 있지만 괜찮아"
         */

        int intBox = (int)PI;
        System.out.println(intBox);

        /*
        intBox = 3
        데이터 손실이 발생했다.
        소수점을 모두 버림
         */

        // 연습

        double interestRate;

        int discount;

        interestRate = 15.5;
        // discount = interestRate;

        /*
        4byte 상자에 8byte 상자를 넣으려고 했더니
        컴파일 시점에서 오류가 발생했다.
         */

        discount = (int)interestRate; // 강제 형 변환
        System.out.println(discount);

        // 응용
        System.out.println((int)7.5); // 강제 형 변환
        System.out.println((int)0.1234);

    } // end of main
} // end

 

// 연습

자료형을 올바르게 쓰지 않으면 심각한 데이터 손실이 발생할 수 있다.

    // entry
    public static void main(String[] args) {

        int a = 300;
        double b = a;
        // b = 300.0 // 자동 형 변환
        System.out.println("실수형: " + b);

        // 문제
        double c = 5.67;
        int d = (int)c; // 강제 형변환
        System.out.println("5.67 변환" + d);

        // 문제
        float floatNum = 4.5f;
        int intNum = (int)floatNum;
        System.out.println("4.5 변환" + intNum);

        // 문제
        double largeVallue = 150.75;
        byte byteValue = (byte)largeVallue;
        // byteValue = -106 / 데이터 손실 / 표현가능한 수로 대체
        System.out.println("150.75 변환: " + byteValue);

    } // end of main
} // end

 

'Java' 카테고리의 다른 글

반복문 while  (0) 2025.04.14
반복문 for  (0) 2025.04.14
연산자 (= + - * / %) 의 종류와 활용  (0) 2025.04.10
명령프롬프트를 통한 자바 실행 방법  (0) 2025.04.10
데이터타입 - 논리형  (0) 2025.04.10