1. 程式人生 > 其它 >Java中陣列存放的是引用!是物件的地址,不是物件本身,物件都在堆中!

Java中陣列存放的是引用!是物件的地址,不是物件本身,物件都在堆中!

技術標籤: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出來的物件永遠在堆裡,陣列中只存放物件的地址,而不存放物件本身