2009-06-23 9 views

Antwort

101

Ja, es ist in The Java Language Specification definiert.

Von Section 4.2: Primitive Types and Values:

Die integralen Typen sind byte, short, int und long, deren Werte sind 8-Bit, 16-Bit- , 32-Bit- und 64-Bit-signierte two's- Komplement-Ganzzahlen, bzw. char, deren Werte vorzeichenlose 16-Bit-Ganzzahlen sind, die UTF-16-Code-Einheiten darstellen (§3.1).

Und zusätzlich von Section 4.2.1: Integral Types and Values:

Die Werte der ganzzahligen Typen sind ganze Zahlen in den folgenden Bereichen:

  • Für Byte, von -128 bis 127, inklusive
  • Kurz gesagt, von -32768 bis 32767, einschließlich
  • Für int, von -2147483648 bis 2147483647, inklusive
  • für lange, bis von -9223372036854775808 9223372036854775807, inclusive
  • Für char, von '\ u0000' to '\ uffff' inklusive, das heißt, von 0 bis 65535
+1

Ausgezeichnete Info :-) – joe

7

int s sind 32 Bits. Sollten Sie mehr benötigen, sind long s 64 Bit.

0

Java 8 hat einige Unterstützung für vorzeichenlose Ganzzahlen hinzugefügt. Das primitive int ist immer noch signiert, einige Methoden interpretieren sie jedoch als vorzeichenlos.

Die folgenden Verfahren wurden zum Integer class in Java 8 hinzugefügt:

  • compareUnsigned (int x, int y)
  • divideUnsigned (int Dividend, int Divisor)
  • parseUnsignedInt (String s)
  • parseUnsignedInt (String s, int radix)
  • remainderUnsigned (int Dividend, int Divisor)
  • toUnsignedLo ng (int x)
  • toUnsignedString (int i)
  • toUnsignedString (int i, int radix)

Hier ist ein Beispiel Nutzung:

public static void main(String[] args) { 
    int uint = Integer.parseUnsignedInt("4294967295"); 
    System.out.println(uint); // -1 
    System.out.println(Integer.toUnsignedString(uint)); // 4294967295 
} 
2

Als Zusatz, wenn 64 Bits lang erfüllt nicht Ihre Anforderung, versuchen Sie java.math.BigInteger.

Es ist für die Situation geeignet, dass die Zahl außerhalb des Bereichs von 64 Bit lang ist.

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); 

} 

Der Ausgang ist:

Die Summe wird: 18446744073709551614

Der Unterschied ist: -18446744073709551615

Das Produkt ist: -85070591730234615856620279821087277056

der Quotient: 1

Verwandte Themen