前面兩篇分別介紹了static的屬性以及方法。本篇就作一個收尾,介紹下剩下的。java
在以前的總結:this
靜態導包用法,將類的方法直接導入到當前類中,從而直接使用「方法名」便可調用類方法,更加方便。可是看上面的就不是特別直觀,不便於閱讀代碼。code
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.javaget
// 導入包 注意沒有使用 static 關鍵字了 import statics.utils.Utils; public class Test { public static void main(String[] args) { // 上面使用了 static 關鍵字以後,能夠直接使用 Utils 中的方法。 Utils.add(1, 2); } }
對於瞭解了static 方法以後,在來看幾個實際的例子回顧與加深下對 static的理解。it
需求class
但願在每次實例化對象的時候,都打印一個信息,輸出產生第 x 個實例化對象。import
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