appendix> util> boxing TOPUPPREVNEXT

拡大変換

基本データ型の拡大変換と参照型の拡大変換があります。

陽にキャストで指定することもできますが、文脈に応じて自動的におこなわれる変換です。

【基本データ型の拡大変換 widening primitive conversion

int や long から float への変換、 long から double への変換では有効数字が減少しますが、 コンパイル・エラーにもならず、実行時例外も発生しません。

【参照型の拡大変換 widening reference conversion

【拡大変換の起きる場所】

【例1】

long から double への拡大変換で有効数字が減少する例

プログラム WideningDemo1.java

実行結果

WideningDemo1-1.gif

【例2】

呼び出すメソッドを決定する際におこる拡大変換の例

プログラム WideningDemo2.java

実行結果

WideningDemo2-1.gif
8行目は (double,int) 、 9行目は (long,int) をパラメータとするメソッド m を探しますが、 見つからないため、拡大変換をしてマッチする m(double, double) を選択します。

【例3】

縮小変換の例

プログラム WideningDemo3.java

実行結果

WideningDemo3-1.gif
定数の代入の場合、桁あふれがおきなければ縮小変換がされますが(4行目)、 パラメータの受渡しではエラーになります(5行目)。

更新日:2005-07-28