回答
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. 將CURRENCY轉換爲長整型
- 3. 將長整數轉換爲地名
- 4. 將整數(長整數)轉換爲jsp中的雙精度值
- 5. 將長整數列表轉換爲整數
- 6. 將長整數轉換爲整數而不丟失原始值
- 7. 從無符號長整型轉換爲無符號整型
- 8. 類型轉換爲整數
- 9. 將整數指針轉換爲整數
- 10. 將非整數轉換爲整數python
- 11. 將Actionlistener類型轉換爲整數java
- 12. 轉換字符數組長整型
- 13. 轉換十六進制數長整型
- 14. 如何將字節數組轉換爲兩個長整型值?
- 15. 將有符號整數轉換爲無符號長整型的最佳方法?
- 16. 將time_t轉換爲整數
- 17. 將bytearray轉換爲整數
- 18. 將BigDecimal轉換爲整數
- 19. 將NSString轉換爲整數
- 20. 將整數轉換爲titlesForSegmentAtIndex
- 21. 將DateTime轉換爲整數
- 22. 將varchar轉換爲整數
- 23. 將CGPDFPageRef轉換爲整數
- 24. 將java.net.InetAddress轉換成長整數
- 25. 將長整型轉換爲PHP中的字符串
- 26. 如何在Java中將int值轉換爲長整型值?
- 27. 將此var轉換爲長整型列表?
- 28. java將長整型值轉換爲char序列
- 29. 如何將jQuery日期值轉換爲長整型值?
- 30. DB2將長整型值轉換爲時間戳
首先您需要檢查您的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