たとえば、整数がある場合:
int i = 9;
どうすればそれができますか?つまり、完全な構文は次のとおりです。
int i = new Integer(9);
new Integer() 部分全体をスキップして、引き続き機能するにはどうすればよいですか?
ありがとう。
プリミティブはオブジェクトではないため、スキップしません。
コードの 2 行目には、後で Java 言語に追加されたauto-unboxingが含まれています。
new Integer()
プリミティブではありません。ボックス化されたプリミティブです。
実際のプリミティブ (int
など) はオブジェクトではなく、インスタンス化できません。
を記述することもでき Integer x = 9
、Java コンパイラは暗黙的に を挿入することに注意してくださいnew Integer()
。
これはオートボクシングと呼ばれます。
たぶん、オートボクシングを調べたいと思うかもしれません
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 で導入されました。
理由を尋ねれば、あなたの質問はもっと理にかなっていたでしょう
Integer i = 9;
なしnew
で動作する場合、答えは「Java 5 で導入されたプリミティブの自動ボクシングによるもの」です。だから多分それはあなたが本当に聞きたかったことです:)
プリミティブとオブジェクトは 2 つの異なるものです。new Integer(9)
プリミティブがないと、 (Integer は9
コンストラクター内でプリミティブを使用します)のような Integer オブジェクトを作成できません。