如何在Java中将long转换为int ?


当前回答

如果直接强制转换显示错误,你可以这样做:

Long id = 100;
int int_id = (int) (id % 100000);

其他回答

如果使用Guava库,有方法Ints.checkedCast(long)和Ints.saturatedCast(long)用于将long转换为int。

Long x = 100L;
int y = x.intValue();

// Java Program to convert long to int
  
class Main {
  public static void main(String[] args) {
  
    // create long variable
    long value1 = 523386L;
    long value2 = -4456368L;
  
    // change long to int
    int num1 = Math.toIntExact(value1);
    int num2 = Math.toIntExact(value2);
      
    // print the type
    System.out.println("Converted type: "+ ((Object)num1).getClass().getName());
    System.out.println("Converted type: "+ ((Object)num2).getClass().getName());
  
    // print the int value
    System.out.println(num1);  // 52336
    System.out.println(num2);  // -445636
  }
}
long x = 3;
int y = (int) x;

但是假设long可以表示为int,你们知道这两者的区别吗?

在Java 8中更新:

Math.toIntExact(value);

最初的回答:

简单的类型转换应该做到:

long l = 100000;
int i = (int) l;

但是,请注意,较大的数字(通常大于2147483647,小于-2147483648)将丢失一些位,并将被错误地表示。

例如,2147483648将表示为-2147483648。