1. 程式人生 > >Java基礎知識回顧之面對物件基礎理解

Java基礎知識回顧之面對物件基礎理解

Java 物件的引用

說明

  1. 類的描述是公共特徵,類必須通過物件才可以使用
  2. 宣告物件指的是未開闢堆的記憶體物件,如果直接是使用此物件,會出現"NullPointerException",物件可以通過關鍵字 new 來進行堆記憶體空間的開闢,有了堆記憶體引用的物件才稱為例項化物件
  3. 堆記憶體儲存的是物件中所有屬性的內容,而棧記憶體儲存的是堆記憶體的地址數值(為了簡單理解,才稱棧記憶體儲存的是物件名稱)
  4. 垃圾空間指的是沒有任何棧記憶體指向的堆記憶體空間,會被 GC(垃圾回收機制) 不定時進行回收
class Book{
    // 這種是沒有封裝性
// 由於沒有使用 private 關鍵字來修飾變數所以下面的程式碼可以直接給 類賦值 String title; double price; public void getInfo(){ System.out.println("圖書名稱:"+ this.title + ",價格為:"+ this.price); } } public class Test { public static void main(String[] args) { // 分別建立兩個 Book 例項, 使用new關鍵字會開闢一個新的 堆記憶體空間 Book bookA = new Book
(); // bookA 一個棧記憶體,指向 new 開闢的記憶體空間 Book bookB = new Book(); // bookA.price = 89.8; bookA.title = "Java 開發"; // 給 booA 這個物件賦值, bookB.price = 69.8; bookB.title = "JSP 開發"; // 給 booB 這個物件賦值 bookA.getInfo(); bookB.getInfo(); // 將 bookA 的地址引用,賦值給 bookB,此時 bookB 之前的賦值會被覆蓋,然後之前的值會被視為 垃圾,會被 GC 回收
bookB = bookA; bookB.price = 100.1; // 此時 bookA 和 bookB 都是指向同一個 堆記憶體空間, bookB的值改變,那麼 bookA 的資訊也就會跟著變化 bookA.getInfo(); // 圖書名稱:Java 開發,價格為:100.1 } }

Java構造器

構造方法與普通方法的區別

  • 構造方法是在例項化新物件(new)的時候只調用一次
  • 普通方法是在例項化物件產生之後可以隨意呼叫多次

在實際工作之中,構造方法的核心作用:在類物件例項化的時候設定屬性的初始化內容。構造方法是為了屬性初始化準備的。

物件的宣告以及例項化的區別

class Book{
    public Book(){
        System.out.println("*************");
    }
}

public class Test {
	public static void main(String[] args) {
		Book book = null;	// 宣告
		book = new Book();	// 例項化
	}
}

匿名物件

既然有了構造方法的概念,其實就可以根據此方法使用匿名物件。之前定義都是屬於有名物件,所有的物件都給了一個名字。但是這個名字真正使用的時候呼叫的肯定是堆記憶體空間。即:真實的物件都儲存在了堆記憶體空間之中,如果沒有棧指向的物件就被稱為

下面省下了 Book 類,以及 Book 的構造器和 getter 與 setter 方法。

public class Test {

	public static void main(String[] args) {
		
		// 沒有名聲一個棧物件的名字指向,Book 就是一個匿名物件
		new Book("Java 開發", 200).getInfo();
	}
}

由於匿名物件沒有其他物件對其引用,所以只能使用一次,使用過後,就會被視為垃圾,等待 GC 回收