In der Oracle „Primitive Datentypen“ Seite , erwähnt sie , dass Java 8 Unterstützung für unsigned ints und sehnt sich fügt hinzu:
int: Standardmäßig ist derintDatentyp eine 32-Bit-Zweierkomplement-Ganzzahl mit Vorzeichen, die einen Minimalwert von –2 31 und einen Maximalwert von 2 31 –1 hat. In Java SE 8 und höher können Sie denintDatentyp verwenden, um eine vorzeichenlose 32-Bit-Ganzzahl darzustellen, die einen Minimalwert von 0 und einen Maximalwert von 2 32 −1 hat. Verwenden Sie dieIntegerKlasse, um denintDatentyp als Ganzzahl ohne Vorzeichen zu verwenden. Weitere Informationen finden Sie im Abschnitt Die Zahlenklassen. Statische Methoden wiecompareUnsigned,divideUnsignedetc wurden die hinzugefügtIntegerKlasse , um die arithmetischen Operationen für ganze Zahlen ohne Vorzeichen zu unterstützen.
long: DerlongDatentyp ist eine 64-Bit-Zweierkomplement-Ganzzahl. Das Vorzeichenlonghat einen Minimalwert von −2 63 und einen Maximalwert von 2 63 −1. In Java SE 8 und höher können Sie denlongDatentyp verwenden, um ein vorzeichenloses 64-Bit darzustellenlong, das einen Mindestwert von 0 und einen Höchstwert von 2 64 −1 hat. Verwenden Sie diesen Datentyp, wenn Sie einen Wertebereich benötigen, der breiter ist als der von int bereitgestellte. DieLongKlasse enthält auch Methoden wiecompareUnsigned,divideUnsignedetc arithmetische Operationen für unsigned zu unterstützenlong.
Ich finde jedoch keine Möglichkeit, ein vorzeichenloses Long oder eine Ganzzahl zu deklarieren. Der folgende Code gibt beispielsweise eine Compiler-Fehlermeldung aus: "Das Literal liegt außerhalb des Bereichs" (ich verwende natürlich Java 8), wenn es im Bereich liegen sollte (der zugewiesene Wert ist genau 2 64 −1). ::
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
Gibt es also eine Möglichkeit, ein Int oder Long ohne Vorzeichen zu deklarieren?