432 Stimmen

Wie kann ich in Java einen long in int umwandeln?

Wie kann ich in Java einen long in int umwandeln?

30voto

Theo Punkte 128508
long x = 3;
int y = (int) x;

aber das setzt voraus, dass die long kann dargestellt werden als eine int Kennen Sie den Unterschied zwischen diesen beiden?

28voto

eleonzx Punkte 669

Sie können die Long Wrapper anstelle von long primitiv und rufen

Long.intValue()

[Java7 intValue()-Dokumente](http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html#intValue())

Es rundet/abschneidet die long Wert entsprechend, um in eine int .

12voto

Stefan Hendriks Punkte 4435

Die kürzeste, sicherste und einfachste Lösung ist:

long myValue=...;
int asInt = Long.valueOf(myValue).intValue();

Bitte beachten Sie, dass das Verhalten von Long.valueOf ist als solches:

Verwenden Sie diesen Code:

System.out.println("Long max: " + Long.MAX_VALUE);
System.out.println("Int max: " + Integer.MAX_VALUE);        
long maxIntValue = Integer.MAX_VALUE;
System.out.println("Long maxIntValue to int: " + Long.valueOf(maxIntValue).intValue());
long maxIntValuePlusOne = Integer.MAX_VALUE + 1;
System.out.println("Long maxIntValuePlusOne to int: " + Long.valueOf(maxIntValuePlusOne).intValue());
System.out.println("Long max to int: " + Long.valueOf(Long.MAX_VALUE).intValue());

Ergebnisse in:

Long max: 9223372036854775807
Int max: 2147483647
Long max to int: -1
Long maxIntValue to int: 2147483647
Long maxIntValuePlusOne to int: -2147483648

6voto

Mohammad H Punkte 765

Wenn das direkte Gießen einen Fehler ergibt, können Sie wie folgt vorgehen:

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

4voto

Alexis Dufrenoy Punkte 11464

In Java ist ein Long eine vorzeichenbehaftete 64-Bit-Zahl, d. h. Sie können Zahlen zwischen -9.223.372.036.854.775.808 und 9.223.372.036.854.775.807 (einschließlich) speichern.

Ein int hingegen ist eine vorzeichenbehaftete 32-Bit-Zahl, d. h. Sie können Zahlen zwischen -2.147.483.648 und 2.147.483.647 (einschließlich) speichern.

Wenn also Ihr long außerhalb der für einen int zulässigen Werte liegt, erhalten Sie keine wertvolle Umwandlung.

Einzelheiten zu den Größen der primitiven Java-Typen finden Sie hier:

http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X