Wird Java intimmer und überall eine 32-Bit-Ganzzahl mit Vorzeichen sein?
Antworten:
Ja, es ist in der Java-Sprachspezifikation definiert .
Aus Abschnitt 4.2: Primitive Typen und Werte :
Die Integral-Typen sind
byte,short,int, undlong, deren Werte sind 8-Bit, 16-Bit, 32-Bit und 64-Bit - signierte Zweierkomplement-Ganzzahlen sind, undchar, deren Werte sind 16-Bit Integer ohne Vorzeichen UTF-16 - Code , der Einheiten (§3.1).
Und zusätzlich aus Abschnitt 4.2.1: Integrale Typen und Werte :
Die Werte der Integraltypen sind Ganzzahlen in den folgenden Bereichen:
- Für Byte von -128 bis einschließlich 127
- Kurz gesagt, von -32768 bis einschließlich 32767
- Für int von -2147483648 bis einschließlich 2147483647
- Für lange von -9223372036854775808 bis einschließlich 9223372036854775807
- Für char von '\ u0000' bis '\ uffff' einschließlich, dh von 0 bis 65535
Java 8 hat Unterstützung für vorzeichenlose Ganzzahlen hinzugefügt. Das Grundelement intist weiterhin signiert, einige Methoden interpretieren sie jedoch als vorzeichenlos.
Die folgenden Methoden wurden der Integer-Klasse in Java 8 hinzugefügt :
Hier ist ein Anwendungsbeispiel:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
Wenn 64 Bit nicht Ihren Anforderungen entsprechen, versuchen Sie es mit java.math.BigInteger .
Es ist für Situationen geeignet, in denen die Anzahl außerhalb des Bereichs von 64 Bit liegt.
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
Die Ausgabe ist:
Die Summe ist: 18446744073709551614
Der Unterschied ist: -18446744073709551615
Das Produkt ist: -85070591730234615856620279821087277056
Der Quotient ist: 1
public static final int SIZE = 32;seit Java 1.5 angegeben ist.