Java基礎知識回顧之static應用與總結
阿新 • • 發佈:2018-12-08
相關關鍵字的說明:
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 屬性儲存在全域性資料區。記憶體區一共有四個:棧記憶體、堆記憶體、全域性資料區(存放所有的資料)、全域性程式碼區(存放所有的方法)