3
Byte byte1=10;
Short short1=20;
Integer integer=30;

上記のコードでは、オートボクシングが正常に行われます。以下のコードを参照してください。デフォルトで整数数値リテラルとして 20 を使用しているため、明示的に casitng を実行しています。

Byte byte1=new Byte((byte) 20);
Short short1=new Short((short) 20);

しかし、以下のコードを参照してください。これなしでl、f、dを明示的に使用する必要があります。エラーが表示されています........その背後にある理由は何ですか.私はそれを取得していません.

Long long1=40l;
Float float1=50f;
Double double1=60d;
4

2 に答える 2

3

自動ボクシングには、プリミティブの自動拡張は含まれません。

Java の定数整数数値式のデフォルトの型はintであるため、これらの数値は int であり、必要に応じて整数に自動的にボックス化されます。のように、狭いプリミティブ型がより広い型に割り当てられると、自動拡張が行われintますlong

ただし、2 つのコンパイラ アクションが両方とも発生するわけではありません。そのため、自動ボクシングが正しい型になるように、プリミティブ定数式を適切な型にする必要があります。

于 2013-09-08T14:53:37.817 に答える