読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

『パーフェクトJava』学習ノート:数値(1)

Javaが扱う5種類の整数について
1.byte: -128以上127以下(8ビット)
2.char:0以上65535以下(16ビット)
3.short:-32768以上32767以下(16ビット)
4.int:-2147483648以上2147483647以下(32ビット)
5.long:-922.....以上922以下(64ビット)

Javaにおいて整数に対して複数の型が必要な理由
1.効率性
2.互換性
3.文字の扱い

■ 符号あり整数で知っておくべきこと
1.全てのビットが0の時、値が0
2.最上位ビットが1の時、負の値
3.全てのビットが1の時、-1。1を足すと0になる
4.最上位ビットが1で、他のビットが0の時、負の最大値

■ 整数型の使い分けについて
・byte型とchar型は、それぞれバイトおよび文字としての意味に限定して利用すべきである。
・short、int、longの3つの型の使い分けは悩ましいが、最初の方針としては、「どれでもいいならintを使う」である。その理由は現在のコンピュータにおいて、int型の32ビット長が最も効率的に処理される可能性が高いためである。
・long型はint型を利用すると長さが足りない場合に限定するべき。
・short型を使う場面は、事実上あまり無い。唯一の場面は16ビット長に意味のある場合での利用である。

■ 整数リテラルの型に関する規則について
・Lまたはl(小文字エル)で終わる整数リテラルの型はlong型。それ以外の整数リテラルはint型
・int型リテラル値をbyte型、char型、short型の変数に代入する場合、値の大きさが代入先の範囲であれば値の型が代入先の変数と同じ型になる

1  // int型の整数
1L // long型の整数
long li = 214783648;   // コンパイルエラー
long li = 214783648L; // コンパイルOK

■ 整数四則演算の留意点
・大きな正の整数の和の桁あふれ
・小さな負の整数の差の桁あふれ
・絶対値の大きな整数同士の積の桁あふれ
・商の結果が切り捨てになること
・数値0による演算が実行時例外「java.lang.ArithmeticException」を発生すること

■ インクリメント演算子とデクリメント演算子について
インクリメント演算子とデクリメント演算子を利用すると、コードの意味が明確になるので、使える場面では積極的に使うことを筆者は推奨している。