「4.2.2. 整数演算」の編集履歴(バックアップ)一覧はこちら
4.2.2. 整数演算 - (2012/09/06 (木) 21:45:37) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*[[4. 型と値と変数]]
**[[4.1. 型と変数の種類]]
**[[4.2. プリミティブ型と値]]
***[[4.2.1. 整数型と値]]
***4.2.2. 整数演算
Javaプログラミング言語は整数値に対する演算として以下を提供しています。:
-比較演算子は&tt(){boolean}型の値を返します。:
--&link(数値比較演算子<と<=と>と>=){15.20.1. 数値比較演算子<と<=と>と>=}
--[[数値等価演算子==と!=>15.21.1. 数値等価演算子==と!=]]
-数値演算子は&tt(){int}型もしくは&tt(){long}型を返します。
--[[単項プラス演算子+>15.15.3. 単項プラス演算子+]]、[[単項マイナス演算子->15.15.4. 単項マイナス演算子-]]
--[[乗法演算子>15.17. 乗法演算子]]*と/と%
--[[加法演算子>15.18. 加法演算子]]+と-
--インクリメント演算子、[[前置>15.15.1. 単項インクリメント演算子]]と[[後置>15.14.2. 後置インクリメント演算子++]]の両方をサポート
--デクリメント演算子、[[前置>15.15.2. 単項デクリメント演算子]]と[[後置>15.14.3. 後置デクリメント演算子++]]の両方をサポート
--符号付きまたは符号なし[[シフト演算子>15.19. シフト演算子]]<<と>>と>>>
--[[ビット単位補数演算子~>15.15.5. ビット単位補数演算子~]]
--[[整数ビット単位演算子&と^と|>15.22.1. 整数ビット単位演算子&と^と|]]
--[[条件演算子? :>15.25. 条件演算子? :]]
--[[キャスト演算子>15.16. キャスト式]]、整数値を指定された数値型の値に変換します
--[[文字列結合演算子+>15.18.1. 文字列結合演算子+]]、&tt(){String}オペランドと整数オペランドを与えると整数オペランドの値を表す10進数の&tt(){String}表現に変換し2つの文字列を結合して新たな&tt(){String}型を作成します
他にも便利なコンストラクターやメソッドや定数が&tt(){Byte}、&tt(){Short}、&tt(){Int}、&tt(){Long}、&tt(){Character}クラス内に定義されています。
シフト演算子以外の整数演算子で少なくとも一つのオペランドが&tt(){long}型があれば、演算は64ビット精度で行われ、数値演算子の戻り値は&tt(){long}型になります。他のオペランドが&tt(){long}型でなければ、[[数値昇格>5.6. 数値昇格]]によって最初に&tt(){long}型に[[拡幅>5.1.5. 拡幅参照変換]]されます。
そうでなければ、演算は32ビット精度で行われ、数値演算子の戻り値は&tt(){int}型になります。オペランドが&tt(){int}型でなければ、数値昇格によって最初に&tt(){int}型に拡幅されます。
整数型の任意の値を任意の数値型へキャストしたり、任意の数値型の値からキャストして整数型の任意の値を得ることができます。&tt(){boolean}型と整数型の間はキャストできません。
&i(){&small(){整数式を&tt(){boolean}に変換する方法は[[4.2.5.>4.2.5. ブール型とブール値]]を参照してください。}}
整数演算子はいかなる形であれオーバーフローとアンダーフローを検出しません。
整数演算子は以下の場合において[[例外>11. 例外]]をスローします。:
-ヌル参照のボックス化解除変換が行われる場合、整数演算子は&tt(){NullPointerException}をスローする。
-除算演算子/および剰余演算子%で右オペランドがゼロの場合、&tt(){ArithmeticException}をスローする。
-インクリメント演算子++([[15.14.2.>15.14.2. 後置インクリメント演算子++]]、[[15.15.1.>15.15.1. 単項インクリメント演算子]])とデクリメント演算子--([[15.14.3>15.14.3. 後置デクリメント演算子++]].、[[15.15.2.>15.15.2. 単項デクリメント演算子]])でボックス化変換が要求されたが実際に変換するのに必要なメモリーを確保できない場合、&tt(){OutOfMemoryError}をスローする。
#divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{
&bold(){&aname(ex4.2.2-1){例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));
}
}
&i(){&small(){このプログラムは以下を出力します。:}}
-727379968
1000000000000
&i(){&small(){そしてこの後に、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. 変数]]
*[[4. 型と値と変数]]
**[[4.1. 型と変数の種類]]
**[[4.2. プリミティブ型と値]]
***[[4.2.1. 整数型と値]]
***4.2.2. 整数演算
Javaプログラミング言語は整数値に対する演算として以下を提供しています。:
-比較演算子は&tt(){boolean}型の値を返します。:
--&link(数値比較演算子<と<=と>と>=){15.20.1. 数値比較演算子<と<=と>と>=}
--[[数値等価演算子==と!=>15.21.1. 数値等価演算子==と!=]]
-数値演算子は&tt(){int}型もしくは&tt(){long}型を返します。
--[[単項プラス演算子+>15.15.3. 単項プラス演算子+]]、[[単項マイナス演算子->15.15.4. 単項マイナス演算子-]]
--[[乗法演算子>15.17. 乗法演算子]]*と/と%
--[[加法演算子>15.18. 加法演算子]]+と-
--インクリメント演算子、[[前置>15.15.1. 単項インクリメント演算子]]と[[後置>15.14.2. 後置インクリメント演算子++]]の両方をサポート
--デクリメント演算子、[[前置>15.15.2. 単項デクリメント演算子]]と[[後置>15.14.3. 後置デクリメント演算子++]]の両方をサポート
--符号付きまたは符号なし[[シフト演算子>15.19. シフト演算子]]<<と>>と>>>
--[[ビット単位補数演算子~>15.15.5. ビット単位補数演算子~]]
--[[整数ビット単位演算子&と^と|>15.22.1. 整数ビット単位演算子&と^と|]]
--[[条件演算子? :>15.25. 条件演算子? :]]
--[[キャスト演算子>15.16. キャスト式]]、整数値を指定された数値型の値に変換します
--[[文字列結合演算子+>15.18.1. 文字列結合演算子+]]、&tt(){String}オペランドと整数オペランドを与えると整数オペランドの値を表す10進数の&tt(){String}表現に変換し2つの文字列を結合して新たな&tt(){String}型を作成します
他にも便利なコンストラクターやメソッドや定数が&tt(){Byte}、&tt(){Short}、&tt(){Int}、&tt(){Long}、&tt(){Character}クラス内に定義されています。
シフト演算子以外の整数演算子で少なくとも一つのオペランドが&tt(){long}型があれば、演算は64ビット精度で行われ、数値演算子の戻り値は&tt(){long}型になります。他のオペランドが&tt(){long}型でなければ、[[数値昇格>5.6. 数値昇格]]によって最初に&tt(){long}型に[[拡幅>5.1.5. 拡幅参照変換]]されます。
そうでなければ、演算は32ビット精度で行われ、数値演算子の戻り値は&tt(){int}型になります。オペランドが&tt(){int}型でなければ、数値昇格によって最初に&tt(){int}型に拡幅されます。
整数型の任意の値を任意の数値型へキャストしたり、任意の数値型の値からキャストして整数型の任意の値を得ることができます。&tt(){boolean}型と整数型の間はキャストできません。
&i(){&small(){整数式を&tt(){boolean}に変換する方法は[[4.2.5.>4.2.5. ブール型とブール値]]を参照してください。}}
整数演算子はいかなる形であれオーバーフローとアンダーフローを検出しません。
整数演算子は以下の場合において[[例外>11. 例外]]をスローします。:
-ヌル参照のボックス化解除変換が行われる場合、整数演算子は&tt(){NullPointerException}をスローする。
-除算演算子/および剰余演算子%で右オペランドがゼロの場合、&tt(){ArithmeticException}をスローする。
-インクリメント演算子++([[15.14.2.>15.14.2. 後置インクリメント演算子++]]、[[15.15.1.>15.15.1. 単項インクリメント演算子]])とデクリメント演算子--([[15.14.3>15.14.3. 後置デクリメント演算子++]].、[[15.15.2.>15.15.2. 単項デクリメント演算子]])でボックス化変換が要求されたが実際に変換するのに必要なメモリーを確保できない場合、&tt(){OutOfMemoryError}をスローする。
#divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{
&bold(){&aname(ex4.2.2-1,option=nolink){例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));
}
}
&i(){&small(){このプログラムは以下を出力します。:}}
-727379968
1000000000000
&i(){&small(){そしてこの後に、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. 変数]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: