3

たとえば、整数がある場合:

int i = 9;

どうすればそれができますか?つまり、完全な構文は次のとおりです。

int i = new Integer(9);

new Integer() 部分全体をスキップして、引き続き機能するにはどうすればよいですか?

ありがとう。

4

5 に答える 5

9

プリミティブはオブジェクトではないため、スキップしません。

コードの 2 行目には、後で Java 言語に追加されたauto-unboxingが含まれています。

于 2012-06-24T12:53:51.307 に答える
7

new Integer()プリミティブではありません。ボックス化されたプリミティブです。
実際のプリミティブ (intなど) はオブジェクトではなく、インスタンス化できません。

を記述することもでき Integer x = 9、Java コンパイラは暗黙的に を挿入することに注意してくださいnew Integer()
これはオートボクシングと呼ばれます。

于 2012-06-24T12:53:54.980 に答える
3

たぶん、オートボクシングを調べたいと思うかもしれません

Primitive : Reference Mapping
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
bool : Boolean
char : Character

自動ボックス化/ボックス化解除は、プリミティブ型と同等のオブジェクト型との間の自動化された変換です。たとえば、int プリミティブと Integer オブジェクトの間、または boolean プリミティブと Boolean オブジェクトの間の変換です。これは Java 5 で導入されました。

于 2012-06-24T12:54:41.207 に答える
2

理由を尋ねれば、あなたの質問はもっと理にかなっていたでしょう

Integer i = 9;

なしnewで動作する場合、答えは「Java 5 で導入されたプリミティブの自動ボクシングによるもの」です。だから多分それはあなたが本当に聞きたかったことです:)

于 2012-06-24T13:55:04.477 に答える
2

プリミティブとオブジェクトは 2 つの異なるものです。new Integer(9)プリミティブがないと、 (Integer は9コンストラクター内でプリミティブを使用します)のような Integer オブジェクトを作成できません。

于 2012-06-24T12:55:33.123 に答える