1. 程式人生 > >Java基礎知識回顧之static應用與總結

Java基礎知識回顧之static應用與總結

相關關鍵字的說明:
this關鍵字
final關鍵字
static關鍵字修飾屬性
static關鍵字修飾方法
static關鍵字應用與總結

前面兩篇分別介紹了static的屬性以及方法。本篇就做一個收尾,介紹下剩下的。

在之前的總結:

  • 不管多少個物件,都使用同一個 static 屬性
  • 使用 static 方法可以避免掉用例項化方法之後才能呼叫的限制。

匯入 static 類的包

靜態匯入包

靜態導包用法,將類的方法直接匯入到當前類中,從而直接使用“方法名”即可呼叫類方法,更加方便。但是看上面的就不是特別直觀,不便於閱讀程式碼。

Utils.java

package statics.utils;

public class Utils {

	public static int int2Str(String str) {
		return Integer.valueOf(str);
	}

	public static int add(int x, int y) {
		return x+y;
	}
}

Test.java

// 匯入包 注意使用了 static 關鍵字
import static statics.utils.Utils.*;

public class Test {

	public static void main(String[] args) {
	    // 上面使用了 static 關鍵字之後,可以直接使用 Utils 中的方法。
		add(1, 2);
	}
}

通過 類名.方法名

Test.java

// 匯入包 注意沒有使用 static 關鍵字了
import statics.utils.Utils;

public class Test {

	public static void main(String[] args) {
	    // 上面使用了 static 關鍵字之後,可以直接使用 Utils 中的方法。
		Utils.add(1, 2);
	}
}

static 的例項用法

對於瞭解了static 方法之後,在來看幾個實際的例子回顧與加深下對 static的理解。

示例一:實現類例項化的統計

需求

希望在每次例項化物件的時候,都列印一個資訊,輸出產生第 x 個例項化物件。

Test.java

class Book {
	
	static int Index = 0;
	
	Book(){
		Index++;
		System.out.println("例項化物件第"+ Index + "個");
	}
}

public class Test {

	public static void main(String[] args) {
		new Book();     new Book();     new Book();
		new Book();     new Book();     new Book();
	}
}

控制檯輸出

例項化物件第1個
例項化物件第2個
例項化物件第3個
例項化物件第4個
例項化物件第5個
例項化物件第6個

示例二:實現屬性的自動設定

需求

例如:現在某一個類有一個無參構造方法,一個有參構造方法,有參構造主要的目的是傳遞一個 title 屬性,但是希望呼叫的不管是 有參構造方法還是無參構造方法,都可以為 title 設定內容,希望內容不要重複。

Test.java

class Book {

	private String title;
	static int Index = 0;

	Book() {
		// 通過 this 關鍵字呼叫有參構造方法
		this("NOTITLE" + Index++);
	}

	Book(String title) {
		this.title = title;
	}
	
	public String getTitle() {
		return this.title;
	}
}

public class Test {

	public static void main(String[] args) {
		System.out.println(new Book("java").getTitle());
		System.out.println(new Book().getTitle());
		System.out.println(new Book().getTitle());
	}
}

控制檯輸出

java
NOTITLE0
NOTITLE1

總結

  • static 屬性和方法可以再沒有例項化物件的時候直接由類名稱進行呼叫。
  • static 屬性儲存在全域性資料區。記憶體區一共有四個:棧記憶體、堆記憶體、全域性資料區(存放所有的資料)、全域性程式碼區(存放所有的方法)