次の基本を考慮します。
- ヒープ
Objectのみで生活し、 - アレイ IS-A
Objectおよび IntegerIS-AObject
このような単純な質問に答えるのは難しいと思います. JVMint[]との間に違いはありますか? それとも「コンパイル時」にのみ意味がありますか?Integer[]
実行時に違いがあります。
int[]プリミティブな int 値の配列です。Integer[]整数オブジェクトへの参照を保持する「オブジェクト」配列です。
最も重要な実際の違い:値int[]を保持できませんnull。
しかし、私はまだ混乱しています:
int[]プリミティブ値だけを保存しますか? もしそうなら、プリミティブ型はラップされずにヒープ上で生きていけるということではないですか?
int[]プリミティブ型を格納します。そして、配列自体はヒープ上に存在します。ただし、これらのプリミティブは配列の一部として割り当てられます。それらは、ヒープの別の場所に個別に保管されることはありません。これは、プリミティブ フィールドがオブジェクト インスタンスの一部であることに非常に似ています。オブジェクトはヒープ上にあり、そのフィールドはそのオブジェクトの不可欠な部分です (一方、非プリミティブ フィールドの場合、参照のみがオブジェクト内に格納されます)。参照先のターゲット インスタンスは、ヒープに個別に格納されます)。
int配列内に「ラップ」されていると言えます。
Integer と int の違いはこちらにまとめられています。