Jak przekonwertować wartość Long
na wartość Integer
w Javie?Konwertuj długo na Integer
Odpowiedz
Integer i = theLong != null ? theLong.intValue() : null;
lub jeśli nie trzeba się martwić o wartości null:
// auto-unboxing does not go from Long to int directly, so
Integer i = (int) (long) theLong;
I w obu przypadkach, może napotkasz przepełnienia (bo długo można przechowywać szerszy zasięg niż całkowita).
To najlepsza odpowiedź, ponieważ obsługuje wartości NULL. –
@ViacheslavDobromyslov pytanie dotyczyło wartości Long, a nie wartości pustych.I osobiście wierzę w odrzucanie wartości zerowej z góry, zamiast używania null w -> null out, a tym samym transportu null przez moją aplikację. Można więc również twierdzić, że jest to najgorsza odpowiedź :-) –
Dlaczego miałbyś rzucać dwa razy, gdy możesz po prostu nazwać "intValue" zamiast? Plus to będzie unbox do long, cast do int, i rebox do 'Integer', co nie wydaje się zbyt przydatne. Nie widzę sensu na głowie, czy masz ku temu dobry powód? – Dici
Musisz wpisać go.
long i = 100L;
int k = (int) i;
Pamiętaj, że długi ma większy zasięg niż int, więc możesz utracić dane.
Jeśli mówisz o typach pudełkowych, przeczytaj artykuł documentation.
Integer intValue = myLong.intValue();
Wygląda o wiele czystszy niż (int) (długo) imo. –
To nie działa z wartością NULL –
@ViacheslavDobromyslov tak, masz rację. To oczywiste, – birdy
Oto trzy sposoby, aby to zrobić:
Long l = 123L;
Integer correctButComplicated = Integer.valueOf(l.intValue());
Integer withBoxing = l.intValue();
Integer terrible = (int) (long) l;
Wszystkie trzy wersje generują niemal identyczny kod bajtowy:
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]
Drobne zagadnienie stylistyki: Powinieneś raczej używać przyrostka '123L' dla większych liter dla czytelności. – Joey
Albo możesz użyć dobrej czcionki ... i znowu zaczynamy ...: D (tylko j/k, ja też to robię) – davidcesarino
To nie działa z wartością NULL –
w Javie, nie jest rygorystyczny sposób przekonwertować długa do int
nie tylko lnog może konwertować na int, każdy typ klasy się rozszerza Liczba może konwertować do innych Numbe r typ ogólnie, tutaj pokażę ci, jak konwertować długi na int, inny na odwrót.
Long l = 1234567L;
int i = org.springframework.util.NumberUtils.convertNumberToTargetClass(l, Integer.class);
Jeśli zależy Ci, aby sprawdzić, przelewów i mają Guava poręczny, istnieje Ints.checkedCast()
:
int theInt = Ints.checkedCast(theLong);
The implementation jest martwe proste i rzuca IllegalArgumentException na overflow:
public static int checkedCast(long value) {
int result = (int) value;
checkArgument(result == value, "Out of range: %s", value);
return result;
}
Najlepszym prosty sposób to:
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;
}
Zakładając not null longVal
Integer intVal = ((Number)longVal).intValue();
to działa na przykład y można uzyskać obiekt, który może być całkowita lub długi. Wiem, że jest brzydki, ale to się zdarza ...
Jeśli używasz Java 8 Zrób to jak poniżej
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);
}
}
długich zwiedzających = 1000;
int convVisitors = (int) goście;
- 1. Konwertuj Integer Into na ciąg
- 2. Haskell Konwertuj Integer na Int?
- 3. Konwertuj Integer na Double w MIPS
- 4. Konwersja Integer na tablicy
- 5. Jak długo printf długo
- 6. C++ podwójnie długo długo
- 7. Konwertuj System.Windows.Media.Pen na System.Drawing.Pen
- 8. Jak długo jest zbyt długo na pakiet testowy?
- 9. Konwersja Integer na ObservableValue <Integer> w javafx
- 10. Klonowanie na ubuntu trwa długo
- 11. Konwertuj ciąg na matematyczną ocenę
- 12. Konwertuj ciąg znaków szesnastkowych na kolor RGB
- 13. Integer zamień na WoW Gold
- 14. Konwersja z Integer, na BigInteger
- 15. JavaScript long integer
- 16. Konwertuj std :: wektor na tablicę
- 17. Konwertuj NA na poziom czynnika
- 18. Konwertuj CSS na HTML
- 19. Konwertuj obraz na XAML?
- 20. Konwertuj ciąg na LatLng
- 21. Konwertuj BytesIO na Plik
- 22. Konwertuj tablicę na JSON
- 23. Konwertuj klasę na rozszerzenie
- 24. Konwertuj wielokąt na trójkąty
- 25. Konwertuj datatable na datareader
- 26. Konwertuj Actionscript na JavaScript
- 27. Konwertuj system.data.linq.binary na bajt []
- 28. Konwertuj bajt [] na sbyte []
- 29. Konwertuj EntityReference na Entity
- 30. Konwertuj na wyliczenie
Najpierw należy sprawdzić, czy Long nie przekracza całkowitej wartości maksymalnej. – Lukasz
Java 8: http://stackoverflow.com/a/36331461/2291056 – Kuchi