Integer(object) を int(primitive) に割り当てたときにコンパイラがエラーを出さないのはなぜですか?
int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.
これは、他のすべての型 (byte-Byte、float-Float) の場合です。
理由は何ですか?ここで何か不足していますか?
Integer(object) を int(primitive) に割り当てたときにコンパイラがエラーを出さないのはなぜですか?
int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.
これは、他のすべての型 (byte-Byte、float-Float) の場合です。
理由は何ですか?ここで何か不足していますか?
これは、オートボクシング/アンボクシングと呼ばれます。
int
Java 1.5 では、コンパイラは自動的にプリミティブを対応するクラス (たとえば、andなど) に「ボックス化」し、必要Integer
に応じてボックス化を解除します。double
Double
詳細については、ドキュメントのこのページを参照してください。
Java SE 5.0 では、新機能としてオートボクシングが導入されました。詳細については、Java ドキュメントを参照してください。http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
Java 5 以降では、オートボクシングを実行できます。コンパイラは、コードを暗黙的に次のように変換します。
int i;
Integer ii = new Integer(5);
i = ii.intValue();
i = ii;//no compilation error.
これは自動ボックス化解除と呼ばれるためです。を割り当てるobject to primitive variable
と、オブジェクトから値が取り出され、プリミティブに割り当てられます。このプロセスは と呼ばれautounboxing
ます。その逆ですAutoboxing
。
これは「オートボクシング/アンボクシング」と呼ばれます。のようなプリミティブ型は、必要に応じint
てクラスのようなものに自動的に変換されInteger
、その逆も同様です。