int型とは
Javaで数字を扱うときによく使われるのがint型と呼ばれるデータ型です。整数を扱う一般的な型ですので小数点が出てこない数字の場合には大抵この型を指定すれば良いでしょう。
使うデータの量
int型の変数を宣言するとこの変数のために32ビットの領域を確保します。つまり2進数で32桁分となります。しかし32桁全部を数字に使うわけではありません。一番左側のつまり最大桁側のビットは正負の符号のために使います。
0の場合 | 正の数(+) |
1の場合 | 負の数(ー) |
他の31桁を数字のために使います。最大値は2の31乗なので2147483648種類の値を扱えます。値の範囲は0〜2147483647になります。0始まりなので最大値は2の31乗より一つ少ない数字であることに注意してください。これが正の数での範囲になります。
負の数でも同じく2147483648種類の値を扱えます。この場合一番大きな数字は-1になるため値の範囲は-2147483648〜-1になります。
2進数 | 10進数 | 備考 |
---|---|---|
0000 0000 0000 0000 0000 0000 0000 0000 | 0 | 正の数の最小値 |
〜 | 〜 | 〜 |
0111 1111 1111 1111 1111 1111 1111 1111 | 2147483647 | 正の数の最大値 |
1000 0000 0000 0000 0000 0000 0000 0000 | -2147483648 | 負の数の最小値 |
〜 | 〜 | 〜 |
1111 1111 1111 1111 1111 1111 1111 1111 | -1 | 負の数の最大値 |
intの限界
プラスマイナス21億あるので整数として使っている分には特に問題はありません。しかしすぐ大きくなってしまう数の場合は注意が必要です。例えばコンピューターは時間をミリ秒(1秒の1,000分の1)とかナノ秒(1,000,000分の1)という細かい単位で測ります。この場合int型はすぐに値が溢れてしまいます。ミリ秒の場合は25日目で値が溢れてしまいます。ナノ秒の場合は36分目で値が溢れる計算になります。
long型とは
より大きな整数を扱う場合にはintの倍のデータ量のlong型を使います。longも仕組みはintと同じで一番左のビットを正負の記号に、残りの63ビットを数字に当てます。最小値は2の63乗にマイナス符号をつけた数で、最大値は2の63乗から1引いた数字です。この型だとナノ秒の単位でも29万年ほど連続して測れます。
ただし配列などですごくたくさんの整数型を使うときにはlongだとintの倍のメモリを使うので計算する機械がそれに耐えうるか検討した方がよいです。
short型とは
あまり使われることはありませんがintの半分のデータ量つまり16ビットの整数型も存在します。shortと呼ばれていてこれも仕組みはintと同じです1ビットを符号につい買い15ビットを数字に当てるので最小値-32,768から最大値32,767までとなります。
メリットとしてはメモリをあまり使わない(intの半分、longの4分の1)という点ですが、値がこの範囲に限られるかどうか想定してから使うようにしましょう。