「4.2.2. 整数演算」の編集履歴(バックアップ)一覧に戻る

4.2.2. 整数演算 - (2012/09/10 (月) 08:03:10) の編集履歴(バックアップ)


4. 型と値と変数

4.1. 型と変数の種類

4.2. プリミティブ型と値

4.2.1. 整数型と値

4.2.2. 整数演算

Javaプログラミング言語は整数値に対する演算として以下を提供しています。:

他にも便利なコンストラクターやメソッドや定数がByteShortIntLongCharacterクラス内に定義されています。

シフト演算子以外の整数演算子で少なくとも一つのオペランドがlong型があれば、演算は64ビット精度で行われ、数値演算子の戻り値はlong型になります。他のオペランドがlong型でなければ、数値昇格によって最初にlong型に拡幅されます。

そうでなければ、演算は32ビット精度で行われ、数値演算子の戻り値はint型になります。オペランドがint型でなければ、数値昇格によって最初にint型に拡幅されます。

整数型の任意の値を任意の数値型へキャストしたり、任意の数値型の値からキャストして整数型の任意の値を得ることができます。boolean型と整数型の間はキャストできません。

整数式をbooleanに変換する方法は4.2.5.を参照してください。

整数演算子はいかなる形であれオーバーフローとアンダーフローを検出しません。

整数演算子は以下の場合において例外をスローします。:
  • ヌル参照のボックス化解除変換が行われる場合、整数演算子はNullPointerExceptionをスローする。
  • 除算演算子/および剰余演算子%で右オペランドがゼロの場合、ArithmeticExceptionをスローする。
  • インクリメント演算子++(15.14.2.15.15.1.)とデクリメント演算子--(15.14.3.、15.15.2.)でボックス化変換が要求されたが実際に変換するのに必要なメモリーを確保できない場合、OutOfMemoryErrorをスローする。

例4.2.2-1. 整数演算
class Test {
    public static void main(String[] args) {
        int i = 1000000;
        System.out.println(i * i);
        long l = i;
        System.out.println(l * l);
        System.out.println(20296 / (l - i));
    }
}

このプログラムは以下を出力します。:

-727379968
1000000000000

そしてこの後に、l-iはゼロなので、l-iによる除算でArithmeticExceptionが発生します。1番目の乗算は32ビット精度で行われ、2番目の乗算は64ビット精度で行われます。値-727379968は計算結果である1000000000000(int型には大きすぎる値です)の下32ビットの10進値です。

4.2.3. 浮動小数点型と書式と値

4.2.4. 浮動小数点演算

4.2.5. ブール型とブール値

4.3. 参照型と値

4.4. 型変数

4.5. 引数付き型

4.6. 型の抹消

4.7. 具象可能型

4.8. 未加工型

4.9. 交差型

4.10. 型の派生

4.11. 型の使用箇所

4.12. 変数

目安箱バナー