Java中陣列存放的是引用!是物件的地址,不是物件本身,物件都在堆中!
阿新 • • 發佈:2021-01-14
技術標籤:java
文章目錄
問題1
- 下述程式碼能否編譯通過?為什麼?
interface I{
}
public class Demo04 {
public static void main(String[] args) {
I[] i = new I[2];
}
}
- 可以編譯通過,這就涉及到對Java中陣列的認識了
- 首先
I[] i = new I[2];
是在堆中生成了一個數組物件 - 但是這個陣列中的元素存放的是給定資料型別對應的物件的地址,也就是說陣列中存放的是引用!
- 初值都為null,暫時不指向任何地址,當然可以編譯通過
問題2
- 下述程式碼可以編譯通過嗎?為什麼?
interface I{
}
class C implements I{
}
public class Demo04 {
public static void main(String[] args) {
I[] i = new I[2];
i[0] = new C();
i[1] = new C();
}
}
-
可以編譯通過
-
i[0] = new C();
- 在堆中生成了一個物件
C
,把C的地址賦值給i[0]
- 在堆中生成了一個物件
-
所以要知道
new
出來的物件永遠在堆裡,陣列中只存放物件的地址,而不存放物件本身