자바 형변환

장원재·2024년 11월 26일
0

java

목록 보기
11/19

자바는 자동 형변환과 명시적 형변환 기능을 제공한다. 하나씩 살펴보자.

1. 자동형변환

자바의 숫자 자료형에서는 int < long < double 순으로 더 숫자 범위를 포함할 수 있다. 이때 int의 값을 long이나 double에 대입할려면 어떻게 될까? (상대적으로) 작은값의 범주를 가지는 int는 더큰 값의 범주를 가지는 long, double의 자료형으로 자동 형변환이 일어난다.

public class Casting1 {
    public static void main(String[] args) {
        int intValue = 10;
        long longValue;
        double doubleValue;

        longValue = intValue; //int -> long
        System.out.println("longValue = " + longValue); //10

        doubleValue = intValue; //int -> double
        System.out.println("doubleValue1 = " + doubleValue); //10.0

        doubleValue = 20L; //Long -> double
        System.out.println("doubleValue2 = " + doubleValue); //20.0
    }
}

2. 명시적 형변환

반대로 더 넓은 범주를 가진 long, double이 int로 형변환을 시도하는 상황을 생각해보자. 이때는 리스크를 가지고 있다.

public class Casting3 {
    public static void main(String[] args) {
        long maxIntValue = 2147483647L; //int max
        long maxIntOver = 2147483648L; //int max + 1
        int intValue = 0;

        intValue = (int) maxIntValue;
        System.out.println("maxIntValue casting=" + intValue); //2147483647

        intValue = (int) maxIntOver;
        System.out.println("maxIntOver casting=" + intValue); //-2147483648
    }
}
  • int의 최대 범위가 넘어가는 값을 대입 시도하자 -2147... 의 값이 출력된다. 즉, 오버플로우가 발생하여 int의 가장 작은 값으로 돌아간 것이다.
  • 따라서 명시적 형변환은 자바가 제공하는 기능이지만, 리스크를 가지고 활용하는 기능이다.
profile
데이터 분석에 관심있는 백앤드 개발자 지망생입니다

0개의 댓글

관련 채용 정보