如何在Java中将long转换为int?
如何在Java中将long转换为int?
简单的types铸造应该这样做:
long l = 100000; int i = (int) l;  但是,请注意,大数(通常大于2147483647 ,小于-2147483648 )会丢失一些比特,并且表示不正确。 
 例如, 2147483648将被表示为-2147483648 。 
 Long x = 100L; int y = x.intValue(); 
对于小的值,铸造就足够了:
 long l = 42; int i = (int) l; 
 但是, long可以比int更容纳更多的信息,所以在一般情况下不可能完全地从long转换为int 。 如果long小于或等于Integer.MAX_VALUE ,则可以通过强制转换而不丢失任何信息。 
例如,下面的示例代码:
 System.out.println( "largest long is " + Long.MAX_VALUE ); System.out.println( "largest int is " + Integer.MAX_VALUE ); long x = (long)Integer.MAX_VALUE; x++; System.out.println("long x=" + x); int y = (int) x; System.out.println("int y=" + y); 
在我的机器上产生以下输出:
 largest long is 9223372036854775807 largest int is 2147483647 long x=2147483648 int y=-2147483648 
 注意y上的负号。 由于x保存的值比Integer.MAX_VALUE大1,因此int y无法保存它。 在这种情况下,它缠绕到负数。 
如果你想亲自处理这个案例,你可能会这样做:
 if ( x > (long)Integer.MAX_VALUE ) { // x is too big to convert, throw an exception or something useful } else { y = (int)x; } 
 所有这些假设都是正数。 对于负数,请使用MIN_VALUE而不是“MAX_VALUE” 
 如果使用Guava库 ,则有方法Ints.checkedCast(long)和Ints.saturatedCast(long)将long转换为int 。 
从Java 8开始,您可以使用:Math.toIntExact(long value)
请参阅JavaDoc:Math.toIntExact
返回long参数的值; 如果值溢出一个int,则抛出一个exception。
  Math.toIntExact在JDK 8中的源代码: 
 public static int toIntExact(long value) { if ((int)value != value) { throw new ArithmeticException("integer overflow"); } return (int)value; } 
 long x = 3; int y = (int) x; 
 但是假设long int可以表示为一个int ,你知道两者之间的区别吗? 
您可以使用Long包装器来代替long原语,并调用Long.intValue() http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html#intValue ()
它舍入/截断长整型值,以适应int。
在Java中,long是一个有符号的64位数字,这意味着您可以存储-9,223,372,036,854,775,808和9,223,372,036,854,775,807(含)之间的数字。
另一方面,int是32位的数字,这意味着你可以存储-2,147,483,648和2,147,483,647(含)之间的数字。
所以如果你的长时间超出了整数的允许值,你将不会得到有价值的转换。
有关原始Javatypes的大小的详细信息:
http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
如果直接投射显示错误,你可以这样做:
 Long id = 100; int int_id = (int) (id % 100000); 
 Long l = 100; int i = Math.round(l); 
在Java中,有一个严格的方法来将长整型转换为整型
不仅可以将lnog转换为int,任何types的extends数字都可以转换为其他Numbertypes,这里我将向您展示如何将long转换为int,反之亦然。
 Long l = 1234567L; int i = org.springframework.util.NumberUtils.convertNumberToTargetClass(l, Integer.class); 
