在java中,靜態(tài)方法指被static修飾的成員方法。靜態(tài)方法不需要通過它所屬的類的任何實例就可以被調(diào)用,因此在靜態(tài)方法中不能使用this關(guān)鍵字,也不能直接訪問所屬類的實例變量和實例方法,但是可以直接訪問所屬類的靜態(tài)變量和靜態(tài)方法。
本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。
靜態(tài)方法(或稱為類方法),指被 static 修飾的成員方法。
靜態(tài)方法與實例方法的區(qū)別:
-
靜態(tài)方法不需要通過它所屬的類的任何實例就可以被調(diào)用,因此在靜態(tài)方法中不能使用 this 關(guān)鍵字,也不能直接訪問所屬類的實例變量和實例方法,但是可以直接訪問所屬類的靜態(tài)變量和靜態(tài)方法。另外,和 this 關(guān)鍵字一樣,super 關(guān)鍵字也與類的特定實例相關(guān),所以在靜態(tài)方法中也不能使用 super 關(guān)鍵字。
-
在實例方法中可以直接訪問所屬類的靜態(tài)變量、靜態(tài)方法、實例變量和實例方法。
示例:
創(chuàng)建一個帶靜態(tài)變量的類,添加幾個靜態(tài)方法對靜態(tài)變量的值進行修改,然后在 main( ) 方法中調(diào)用靜態(tài)方法并輸出結(jié)果。
public class StaticMethod { public static int count = 1; // 定義靜態(tài)變量count public int method1() { // 實例方法method1 count++; // 訪問靜態(tài)變量count并賦值 System.out.println("在靜態(tài)方法 method1()中的 count="+count); // 打印count return count; } public static int method2() { // 靜態(tài)方法method2 count += count; // 訪問靜態(tài)變量count并賦值 System.out.println("在靜態(tài)方法 method2()中的 count="+count); // 打印count return count; } public static void PrintCount() { // 靜態(tài)方法PrintCount count += 2; System.out.println("在靜態(tài)方法 PrintCount()中的 count="+count); // 打印count } public static void main(String[] args) { StaticMethod sft = new StaticMethod(); // 通過實例對象調(diào)用實例方法 System.out.println("method1() 方法返回值 intro1="+sft.method1()); // 直接調(diào)用靜態(tài)方法 System.out.println("method2() 方法返回值 intro1="+method2()); // 通過類名調(diào)用靜態(tài)方法,打印 count StaticMethod.PrintCount(); } }
運行該程序后的結(jié)果如下所示:
在靜態(tài)方法 method1()中的 count=2 method1() 方法返回值 intro1=2 在靜態(tài)方法 method2()中的 count=4 method2() 方法返回值 intro1=4 在靜態(tài)方法 PrintCount()中的 count=6
在該程序中,靜態(tài)變量 count 作為實例之間的共享數(shù)據(jù),因此在不同的方法中調(diào)用 count,值是不一樣的。從該程序中可以看出,在靜態(tài)方法 method1() 和 PrintCount() 中是不可以調(diào)用非靜態(tài)方法 method1() 的,而在 method1() 方法中可以調(diào)用靜態(tài)方法 method2() 和 PrintCount()。
在訪問非靜態(tài)方法時,需要通過實例對象來訪問,而在訪問靜態(tài)方法時,可以直接訪問,也可以通過類名來訪問,還可以通過實例化對象來訪問。
相關(guān)視頻教程推薦:Java視頻教程