4
byte b=5;
Integer i=(int)b;//b cast to int and int wrapped into Integer
Integer k=(byte)b;//compilation error, cannot convert from byte to Integer
Integer z=(byte)5;//compiles

私の質問は、なぜInteger z=(byte)5コンパイルInteger k=(byte)bしないのにコンパイルするのですか? さらに言えばInteger z1 = (byte)5LInteger z2 = (byte)5.3Fコンパイルも行います。コンパイル時定数をキャストしようとしていて、キャストが影響しないためですか?

4

1 に答える 1

6

課題として

Integer z=(byte)5

リテラル値を使用すると、コンパイラによってすぐに変換されます

Integer z = Integer.valueOf(5);

コンパイラは、次の場合のように変数を参照するほどスマートではありません。

Integer k= (byte)b;
于 2013-05-02T18:28:44.020 に答える