Java에서 변수 캐스팅
이 자습서에서는 Java에서 변수를 캐스팅하거나 변수를 다른 유형으로 변환하는 방법을 소개합니다.
캐스팅은 프로그래밍 언어에서 하나의 값/변수를 다른 유형으로 캐스팅/변환하는 데 사용됩니다. Java는 int
, float
, double
, boolean
등과 같은 다양한 데이터 유형을 지원하며 코드를 작성하는 동안 변수를 캐스팅해야 할 수 있습니다.
Java는 암시적 및 명시적 캐스팅의 두 가지 유형의 캐스팅을 지원합니다. int
를 long
이나 double
로 변환하면 long
과 double
이 int
보다 더 많은 바이트를 사용하기 때문에 Java가 이를 암시적으로 수행하고 우리는 그 반대를 수행합니다(즉, double
을 int
) 그러면 정수 용량으로 인해 데이터가 손실될 수 있습니다.
따라서 Java는 낮은 데이터 형식에서 높은 데이터 형식으로의 암시적 캐스팅을 허용하지만 높은 데이터 형식에서 낮은 형식으로의 명시적 캐스팅을 허용합니다. 몇 가지 예를 들어 이해합시다.
Java의 암시적 캐스팅
여기 이 예에서 int
를 float
유형, 암시적 캐스팅으로 캐스팅합니다. 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는 데이터 손실로 인해 명시적 캐스팅이 필요합니다.
예를 들어 float
를 int
로 변환하면 소수점 이하 값이 잘립니다. 이것이 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