Eine Variable vom Typ long dient genauso wie eine Variable vom Typ int zum Speichern von ganzen Zahlen.
Der Typ int ist 32 Bit lang und hat einen Wertebereich von -231 bis 231-1.
Der Typ long ist 64 Bit lang und hat einen Wertebereich von -263 bis 263-1.
Zur Typkompatibilität: Einer long-Variable kann ein int-Wert zugewiesen werden. Da eine long-Variable einen größeren Wertebereich wie eine int-Variable hat, kann die Zuweisung einer long-Variable an eine int-Variable nur mit explizitem Cast erfolgen.
public static void main(String[] args) { long a = 4294967298L; System.out.printf("a = %64s\n", toBinaryString(a)); int b = (int) a; System.out.printf("b = %64s\n", toBinaryString(b)); } // Ausgabe: // a = 0000000000000000000000000000000100000000000000000000000000000010 (4294967298) // b = 00000000000000000000000000000010 ( 2) // Hilfsmethoden zur formatierten Ausgabe static String toBinaryString(int n) { StringBuilder sb = new StringBuilder(Long.toBinaryString(n)); while (sb.length() < 32) { sb.insert(0, '0'); } return sb.toString(); } static String toBinaryString(long n) { StringBuilder sb = new StringBuilder(Long.toBinaryString(n)); while (sb.length() < 64) { sb.insert(0, '0'); } return sb.toString(); }
Wird einer int-Variable ein long-Wert zugewiesen, ist auf den Wertebereich zu achten. In Zeile 2 wird die long-Variable a mit dem Wert 232 + 2 belegt. Die Ausgabe in Zeile 9 zeigt die Zahl a im Binärformat.
In Zeile 4 wird a der int-Variable b zugewiesen. Die Ausgabe in Zeile 10 zeigt die Zahl b im Binärformat. Man sieht, dass beim Cast nur die 32 niedrig wertigen Bits (Bit 0 … 31) übernommen werden. Die Variable b hat nach dem Cast den Wert 2.