3

Integer(object) を int(primitive) に割り当てたときにコンパイラがエラーを出さないのはなぜですか?

int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.

これは、他のすべての型 (byte-Byte、float-Float) の場合です。

理由は何ですか?ここで何か不足していますか?

4

5 に答える 5

13

これは、オートボクシング/アンボクシングと呼ばれます。

intJava 1.5 では、コンパイラは自動的にプリミティブを対応するクラス (たとえば、andなど) に「ボックス化」し、必要Integerに応じてボックス化を解除します。doubleDouble

詳細については、ドキュメントのこのページを参照してください。

于 2012-08-10T07:30:05.603 に答える
3

Java SE 5.0 では、新機能としてオートボクシングが導入されました。詳細については、Java ドキュメントを参照してください。http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html

于 2012-08-10T07:31:49.020 に答える
3

Java 5 以降では、オートボクシングを実行できます。コンパイラは、コードを暗黙的に次のように変換します。

int i;
Integer ii = new Integer(5);
i = ii.intValue();
于 2012-08-10T07:32:48.863 に答える
2

i = ii;//no compilation error.

これは自動ボックス化解除と呼ばれるためです。を割り当てるobject to primitive variableと、オブジェクトから値が取り出され、プリミティブに割り当てられます。このプロセスは と呼ばれautounboxingます。その逆ですAutoboxing

于 2012-08-10T07:30:50.507 に答える
2

これは「オートボクシング/アンボクシング」と呼ばれます。のようなプリミティブ型は、必要に応じintてクラスのようなものに自動的に変換されInteger、その逆も同様です。

于 2012-08-10T07:31:14.727 に答える