回答
Integer i = theLong != null ? theLong.intValue() : null;
,或者如果你不需要担心空:
// auto-unboxing does not go from Long to int directly, so
Integer i = (int) (long) theLong;
而在这两种情况下,你可能会遇到溢出(因为龙可以存储更广泛的比整数)。
这是最好的答案,因为它处理NULL值。 – 2014-04-06 01:05:43
@ViacheslavDobromyslov问题是关于Long值,而不是空值。而且我个人认为先拒绝null,而不是在null中使用null,从而在我的应用程序中传输null。所以有人可能会认为这是最糟糕的答案:-) – 2015-06-11 15:46:08
为什么当你只需调用'intValue'而不是两次?此外,它将取消长框,转换为int,并将rebox重新设置为“Integer”,这看起来不是很有用。我没有看到我头顶上的重点,你有这个好理由吗? – Dici 2016-07-14 00:09:03
Integer intValue = myLong.intValue();
看起来比(int) (很长)imo。 – 2013-12-10 20:41:32
它不适用于NULL值 – 2014-03-08 08:35:20
@ViacheslavDobromyslov是的,你是对的。这很明显 – birdy 2014-04-04 08:56:16
这里有三种方法可以做到这一点:
Long l = 123L;
Integer correctButComplicated = Integer.valueOf(l.intValue());
Integer withBoxing = l.intValue();
Integer terrible = (int) (long) l;
所有三个版本的产生几乎相同的字节码:
0 ldc2_w <Long 123> [17]
3 invokestatic java.lang.Long.valueOf(long) : java.lang.Long [19]
6 astore_1 [l]
// first
7 aload_1 [l]
8 invokevirtual java.lang.Long.intValue() : int [25]
11 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
14 astore_2 [correctButComplicated]
// second
15 aload_1 [l]
16 invokevirtual java.lang.Long.intValue() : int [25]
19 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
22 astore_3 [withBoxing]
// third
23 aload_1 [l]
// here's the difference:
24 invokevirtual java.lang.Long.longValue() : long [34]
27 l2i
28 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
31 astore 4 [terrible]
小问题:您应该使用大写后缀'123L'来提高可读性。 – Joey 2012-07-12 12:48:49
或者你可以使用一个很好的字体......然后我们再次去......:D(只是j/k,我也是这么做的) – davidcesarino 2013-03-31 22:22:22
它不适用于NULL值 – 2014-03-08 08:35:02
在java中,有转换很长的一个严格的方法to int
不仅lnog可以转换为int,任何类型的类都可以扩展Number可以转换为其他Numbe一般来说,在这里我会告诉你如何将long转换为int,反之亦然。
Long l = 1234567L;
int i = org.springframework.util.NumberUtils.convertNumberToTargetClass(l, Integer.class);
如果你关心检查溢出,并有Guava得心应手,有Ints.checkedCast()
:
int theInt = Ints.checkedCast(theLong);
The implementation是死的简单,和溢出抛出IllegalArgumentException:
public static int checkedCast(long value) {
int result = (int) value;
checkArgument(result == value, "Out of range: %s", value);
return result;
}
最好简单的做法是:
public static int safeLongToInt(long longNumber)
{
if (longNumber < Integer.MIN_VALUE || longNumber > Integer.MAX_VALUE)
{
throw new IllegalArgumentException(longNumber + " cannot be cast to int without changing its value.");
}
return (int) longNumber;
}
假设不为空longVal
Integer intVal = ((Number)longVal).intValue();
y您得到一个对象,可以是整数或长时间工作的例子。我知道这是丑陋的,但它发生......
如果您使用的是Java 8就做如下
import static java.lang.Math.toIntExact;
public class DateFormatSampleCode {
public static void main(String[] args) {
long longValue = 1223321L;
int longTointValue = toIntExact(longValue);
System.out.println(longTointValue);
}
}
长参观者= 1000;
int convVisitors =(int)visitor;
- 1. 将整数数组转换为长整型
- 2. 将长整数转换为地名
- 3. 将整数(长整数)转换为jsp中的双精度值
- 4. 将长整数列表转换为整数
- 5. 从无符号长整型转换为无符号整型
- 6. 将整数指针转换为整数
- 7. 转换十六进制数长整型
- 8. 如何将字节数组转换为两个长整型值?
- 9. 将有符号整数转换为无符号长整型的最佳方法?
- 10. 将NSString转换为整数
- 11. 将varchar转换为整数
- 12. 将bytearray转换为整数
- 13. 将BigDecimal转换为整数
- 14. 将java.net.InetAddress转换成长整数
- 15. 将此var转换为长整型列表?
- 16. PHP将时间转换为整数,长整数或基于数字的值
- 17. 不将字符串转换为整型
- 18. 将整型字段转换为分钟
- 19. 转换为整数
- 20. 可疑指针转换长整型
- 21. SQL整型转换为DateTime
- 22. 整型转换为字
- 23. 转换为C char数组的Python长整型
- 24. 不能转换为长整数字符串(类型错误)
- 25. 将整数转换为数组数字
- 26. OpenCv整型数组转换
- 27. iphone - 将浮点数转换为整数
- 28. 将字符数组转换为整数
- 29. 将字符数组转换为整数
- 30. MIPS将浮点数转换为整数
首先您需要检查您的Long是否不超过Integer MaxValue。 – Lukasz 2011-04-27 12:26:41
Java 8:http://stackoverflow.com/a/36331461/2291056 – Kuchi 2016-03-31 11:00:49