「5.1.2. 拡幅プリミティブ変換」の編集履歴(バックアップ)一覧はこちら
「5.1.2. 拡幅プリミティブ変換」(2012/09/14 (金) 11:45:38) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*[[5. 変換と昇格]]
**[[5.1. 変換の種類]]
***[[5.1.1. 恒等変換]]
***5.1.2. 拡幅プリミティブ変換
プリミティブ型に対する19の特定の変換が&i(){拡幅プリミティブ変換(widening primitive conversion)}と呼ばれます。:
-&tt(){byte}を&tt(){short}や&tt(){int}、&tt(){long}、&tt(){float}、&tt(){double}へ変換
-&tt(){short}を&tt(){int}や&tt(){long}、&tt(){float}、&tt(){double}へ変換
-&tt(){char}を&tt(){int}や&tt(){long}、&tt(){float}、&tt(){double}へ変換
-&tt(){int}を&tt(){long}や&tt(){float}、&tt(){double}へ変換
-&tt(){long}を&tt(){float}や&tt(){double}へ変換
-&tt(){float}を&tt(){double}へ変換
拡幅プリミティブ変換は数値の全体的な大きさについての情報は失いません。
整数型から他の整数型へのまたは[[&tt(){strictfp}式>FP厳密式]]内での&tt(){float}から&tt(){double}への拡幅プリミティブ変換は全く何の情報も失いません。数値は変換後も正確なままです。
&tt(){strictfp}式以外での&tt(){float}から&tt(){double}への拡幅プリミティブ変換は変換された値の全体的な大きさという点で情報を失うかもしれません。
&tt(){int}や&tt(){long}から&tt(){float}へのまたは&tt(){long}から&tt{double}への拡幅変換では精度が失われるかもしれません。つまり、変換結果は値の最も重要でないビットのいくつかが欠如するかもしれません。この場合、[[IEEE754の直近への丸めモード>4.2.4. 浮動小数点演算]]を使って、結果の浮動小数点値は元の整数値の正しく丸められたバージョンになります。
符号付きへ整数値から整数型Tへの拡幅変換は幅の広い形式を埋めるため整数値の2の補数表現の符号ビットを単純に拡張するだけです。
&tt(){char}の整数型Tへの拡幅変換は幅の広い形式を埋めるため&tt(){char}値の表現をゼロで拡張します。
精度を失うことがあるにもかかわらず、拡幅プリミティブ変換は実行時に例外を決して起こしません([[11.1.1.>11.1.1. 例外の種類]])。
#divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{
&bold(){&aname(ex5.1.2-1,option=nolink){例5.1.2-1. 拡幅プリミティブ変換}}
class Test {
public static void main(String[] args) {
int big = 1234567890;
float approx = big;
System.out.println(big - (int)approx);
}
}
&i(){&small(){このプログラムは以下を出力します。:}}
-46
&i(){&small(){これは&tt(){int}型から&tt(){float}型への変換によって情報が失われたことを示しています。なぜなら、&tt(){float}型の値は下位9ビットが精度ではないからです。}}
}}}
***[[5.1.3. 縮幅プリミティブ変換]]
***[[5.1.4. 拡幅と縮幅プリミティブ変換]]
***[[5.1.5. 拡幅参照変換]]
***[[5.1.6. 縮幅参照変換]]
***[[5.1.7. ボックス化変換]]
***[[5.1.8. ボックス化解除変換]]
***[[5.1.9. 未検査変換]]
***[[5.1.10. 捕捉変換]]
***[[5.1.11. 文字列変換]]
***[[5.1.12. 禁止変換]]
***[[5.1.13. 値集合変換]]
**[[5.2. 代入変換]]
**[[5.3. メソッド呼び出し変換]]
**[[5.4. 文字列変換]]
**[[5.5. キャスト変換]]
**[[5.6. 数値昇格]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: