본문 바로가기

JAVA공부

형변환

명시적 형변환

ex)

public class JavaStudy3 {

    public static void main(String[] args) {
        // 형 변환 예제 : 변수의 타입을 바꾸는 방법
        // 문자열 -> 숫자
        // 정수 -> 실수
        // 실수 -> 정수



        // double형 or float형 -> int
        // 실수 -> 정수(0.xxxx -> 0)
        double doubleNumber = 10.101010;
        float floatNumber = 10.1010f;

        //변환(int)
        int intNumber;
        intNumber = (int)doubleNumber; // double -> int
        System.out.println("Double Type => " + doubleNumber);
        System.out.println("Int Type =>  " + intNumber);

        System.out.println("");
        int Number = (int)floatNumber; // float -> int
        System.out.println("Float Type => " + floatNumber);
        System.out.println("Int Type =>  " + intNumber);



        //정수 -> 실수
        int intNumber1 = 10;

        double doubleNumber1 = (double)intNumber1;
        float floatNumber1 = (float)intNumber1;

        System.out.println("");
        System.out.println("intNumber1 => " + intNumber1);
        System.out.println("doubleNumber1 => " + doubleNumber1);
        System.out.println("floatNumber1 => " + floatNumber1);


    }
}

 자동형변환

ex)

public class JavaStudy4 {
    public static void main(String[] args) {
        // 변수 타입별 크기 순서
        //byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)

        // (1) byte -> int
        byte byteNumber = 10;
        int intNumber = byteNumber;
        System.out.println(intNumber);

        // (2) char(1 byte) -> int(4) 형변환
        char charAlphabet = 'A';
        intNumber = charAlphabet; //char -> int 자동 형변환
        System.out.println(intNumber);

        // (3) int -> long number 형변환
        intNumber = 100;
        long longNumber = intNumber;
        System.out.println(longNumber);

        // (4) int -> double 형 변환
        intNumber = 200;
        double doubleNumber = intNumber;
        System.out.println(doubleNumber);

        //작은 크기의 타입이 큰 크기의 타입과 '계산'될 때,
        //자동으로 큰 크기의 타입으로 형 변환이 됩니다.
        int intNumber1 = 10;
        double doubleNumber1 = 5.5;
        double result = intNumber1 + doubleNumber1;

        System.out.println("Plus => "+ result);

        // 1) 정수로 나누기
        int iResult = intNumber1/ 4;
        // 2) 실수로 나누기
        double dResult = intNumber1 / 4.0;

        System.out.println(iResult + " / " + dResult);

    }
}

 

자동 형변환 vs 강제 형변환

  • 작은 타입 > 큰 타입 형변환시 (자동 형변환)
    • 더 큰 표현범위를 가진 타입으로 변환되는것이라 값의 손실이 없다.
    • 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형변환을 해준다.
  • 큰 타입 > 작은 타입 형변환시 (강제 형변환 = 캐스팅)
    • 더 작은 표현범위를 가진 타입으로 변환된는것이라 값의 손실이 생긴다.
    • 값의 손실이 생기기 때문에 자동으로 형변환을 해주지 않고 개발자가 선택하여 형변환을 한다. 

'JAVA공부' 카테고리의 다른 글

사칙연산  (0) 2023.10.13
연산자  (0) 2023.10.13
비트&바이트  (0) 2023.10.12
입력&출력  (0) 2023.10.12
문자와 문자열  (0) 2023.10.12