Java에서 Long을 Int로 변환하는 방법
Hassan Saeed
2023년10월12일
이 튜토리얼에서는 Java에서long
을int
로 변환하는 방법에 대해 설명합니다.
타입 캐스팅을 사용하여 Java에서long
을int
로 변환
Java에서 long
을 int
로 변환하는 가장 간단한 방법은 (int)longVar
를 사용하여 long
을 int
로 형변환하는 것입니다. 아래 예는이를 설명합니다.
public class MyClass {
public static void main(String args[]) {
long myLong = 10000l;
int myInt = (int) myLong;
System.out.println("Value of long: " + myLong);
System.out.println("Value after conversion to int: " + myInt);
}
}
출력:
Value of long: 10000
Value after conversion to int: 10000
Math.toIntExac()
를 사용하여 Java에서long
을int
로 변환
Java 8 이상에서는 내장 된Math
클래스 메소드 인Math.toIntExac()
를 사용하여long
을 Java에서int
로 변환 할 수 있습니다. 아래 예는이를 설명합니다.
public class MyClass {
public static void main(String args[]) {
long myLong = 10000l;
int myInt = Math.toIntExact(myLong);
System.out.println("Value of long: " + myLong);
System.out.println("Value after conversion to int: " + myInt);
}
}
출력:
Value of long: 10000
Value after conversion to int: 10000
이들은 Java에서long
을int
로 변환하는 데 일반적으로 사용되는 두 가지 방법입니다. 그러나 우리는 우리가 가지고있는long
값이 32 비트와 64 비트의 다른 메모리 제한을 가지고 있기 때문에 int
에 완전히 저장 될 수 있도록해야합니다.
32 비트보다 큰 long
값을 int
로 변환하려고 할 때 두 방법 모두 다르게 작동합니다.
아래 예제는이 경우 형변환이 어떻게 작동하는지 보여줍니다.
public class MyClass {
public static void main(String args[]) {
long myLong = 10000000000l;
int myInt = (int) myLong;
System.out.println("Value of long: " + myLong);
System.out.println("Value after conversion to int: " + myInt);
}
}
출력:
Value of long: 10000000000
Value after conversion to int: 1410065408
int
변수에이long
값을 넣을 수 없기 때문에 변환 된 결과 값이 잘못되었습니다.
아래 예제는이 경우Math.toIntExac()
가 어떻게 동작하는지 보여줍니다.
public class MyClass {
public static void main(String args[]) {
long myLong = 10000000000l;
int myInt = Math.toIntExact(myLong);
System.out.println("Value of long: " + myLong);
System.out.println("Value after conversion to int: " + myInt);
}
}
출력:
> Exception in thread "main" java.lang.ArithmeticException: integer overflow
at java.base/java.lang.Math.toIntExact(Math.java:1071)
at MyClass.main(MyClass.java:4)
이 메소드는long
을int
에 잘못 맞추려고하는 대신integer overflow
오류를 제공합니다.