long 型の値をプログラムで保持したい。
基本データ型の「整数型」に分類されるものの1つで、64bit の 10 進の整数を変数に格納します。
long 型のデータは符号付きで、正負どちらの値も保持することができます。
データ型 | サイズ | 値の範囲 |
---|---|---|
long | 8byte | -9223372036854775808 〜9223372036854775807 |
long 型の演算を行った結果、long 型の扱えるデータの範囲を超えた場合には数値が循環します。
0 による除算は不正となり、ArithmeticException が投げられます。
Javaでは数字リテラルはデフォルトでは int 型のため、通常は int 型の範囲を超える数字リテラルを記述することができません。
そのため、long 型へ値を代入する際にint 型の範囲を超える数字リテラルを記述する必要がある時には、数字リテラルの後ろに " l "または " L "を記述します。
また、" l " や " L "は数字リテラルを代入する変数が long 型であることを明示したい場合にも記述します。
データ型に long 型を指定し、変数名を宣言して使います。
long 変数名 ( = 初期値 );
long a = 32768; // a に 32768 が代入される long b = 2147483648; // int 型の範囲である +2147483647 を超える数字リテラルのためコンパイルエラー long c = 2147483648L; // int 型の範囲を超える数字リテラルを記述する場合には"l"や"L"を直後に入力する long d = 65536L; // 代入する変数がlong 型であることを明示したい時にも"l"や"L"を入力する
long 型の扱えるデータの範囲を超える演算を行うと、数値が循環します。
long a = 5000000000000000000L; long b = 5000000000000000000L; long c = 0; c = a + b; System.out.prlongln("c = " + c );
上記の処理結果は以下のようになります。
c = -8446744073709551616
普通に計算を行うと、答えは「10000000000000000000」になりますが、long 型は 9223372036854775807 までの値までしか扱えないため、値が循環します