Java에서 변수 캐스팅

Mohammad Irfan 2023년10월12일
  1. Java의 암시적 캐스팅
  2. Java의 명시적 캐스팅
  3. Java에서 CastException 방지
Java에서 변수 캐스팅

이 자습서에서는 Java에서 변수를 캐스팅하거나 변수를 다른 유형으로 변환하는 방법을 소개합니다.

캐스팅은 프로그래밍 언어에서 하나의 값/변수를 다른 유형으로 캐스팅/변환하는 데 사용됩니다. Java는 int, float, double, boolean 등과 같은 다양한 데이터 유형을 지원하며 코드를 작성하는 동안 변수를 캐스팅해야 할 수 있습니다.

Java는 암시적 및 명시적 캐스팅의 두 가지 유형의 캐스팅을 지원합니다. intlong이나 double로 변환하면 longdoubleint보다 더 많은 바이트를 사용하기 때문에 Java가 이를 암시적으로 수행하고 우리는 그 반대를 수행합니다(즉, doubleint) 그러면 정수 용량으로 인해 데이터가 손실될 수 있습니다.

따라서 Java는 낮은 데이터 형식에서 높은 데이터 형식으로의 암시적 캐스팅을 허용하지만 높은 데이터 형식에서 낮은 형식으로의 명시적 캐스팅을 허용합니다. 몇 가지 예를 들어 이해합시다.

Java의 암시적 캐스팅

여기 이 예에서 intfloat 유형, 암시적 캐스팅으로 캐스팅합니다. Java는 많은 코드 없이 암시적 캐스팅을 허용하므로 이 코드는 잘 작동합니다.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 23;
    System.out.println("int " + a);
    // int to float - implicit casting
    float f = a;
    System.out.println("float " + f);
  }
}

출력:

int 23
float 23.0

Java의 명시적 캐스팅

경우에 따라 Java는 데이터 손실로 인해 명시적 캐스팅이 필요합니다.

예를 들어 floatint로 변환하면 소수점 이하 값이 잘립니다. 이것이 Java가 암시적으로 이를 수행하지 않고 컴파일 시간 오류를 발생시키는 이유입니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    float a = 23;
    System.out.println("float " + a);
    // float to int - explicit casting
    int f = a;
    System.out.println("int " + f);
  }
}

출력:

Type mismatch: cannot convert from float to int

이 컴파일 타임 오류는 프로그래머에게 이러한 데이터 손실을 방지하기 위한 경고입니다. 프로그래머가 여전히 캐스트를 원하면 Java는 형식 이름을 함수 괄호로 묶는 캐스트 연산자를 허용합니다.

이 컴파일러는 코드를 컴파일하고 실행하지만 값이 잘린 것을 봅니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    float a = 23.5f;
    System.out.println("float " + a);
    // float to int - explicit casting
    int f = (int) a;
    System.out.println("int " + f);
  }
}

출력:

float 23.50
int 23

cast() 메서드를 사용하여 객체 값을 기본 값으로 변환할 수도 있습니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    Integer a = 23;
    System.out.println("integer " + a);
    // float to int - explicit casting
    int i = (Integer.class.cast(a));
    System.out.println("int " + i);
  }
}

출력:

integer 23
int 23

Java에서 CastException 방지

Java 객체를 캐스팅하는 것도 캐스팅 전에 적절한 클래스 유형이 필요한 주요 관심사입니다. 예를 들어 float 유형을 double로 캐스트하면 Java는 이를 허용하지 않고 ClassCastException을 콘솔에 발생시킵니다.

아래 예를 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    Number num = new Float(15.5);
    System.out.println(num);
    Double d = (Double) num;
    System.out.println(d);
  }
}

출력:

15.5
Exception in thread "main" java.lang.ClassCastException