在java中,靜態方法指被static修飾的成員方法。靜態方法不需要通過它所屬的類的任何實例就可以被調用,因此在靜態方法中不能使用this關鍵字,也不能直接訪問所屬類的實例變量和實例方法,但是可以直接訪問所屬類的靜態變量和靜態方法。
本教程操作環境:windows7系統、java8版、DELL G3電腦。
靜態方法(或稱為類方法),指被 static 修飾的成員方法。
靜態方法與實例方法的區別:
靜態方法不需要通過它所屬的類的任何實例就可以被調用,因此在靜態方法中不能使用 this 關鍵字,也不能直接訪問所屬類的實例變量和實例方法,但是可以直接訪問所屬類的靜態變量和靜態方法。另外,和 this 關鍵字一樣,super 關鍵字也與類的特定實例相關,所以在靜態方法中也不能使用 super 關鍵字。
在實例方法中可以直接訪問所屬類的靜態變量、靜態方法、實例變量和實例方法。
示例:
創建一個帶靜態變量的類,添加幾個靜態方法對靜態變量的值進行修改,然后在 main( ) 方法中調用靜態方法並輸出結果。
1 public class StaticMethod { 2 3 public static int count = 1; // 定義靜態變量count 4 5 public int method1() { 6 7 // 實例方法method1 8 9 count++; // 訪問靜態變量count並賦值 10 11 System.out.println("在靜態方法 method1()中的 count="+count); // 打印count 12 13 return count; 14 15 } 16 17 public static int method2() { 18 19 // 靜態方法method2 20 21 count += count; // 訪問靜態變量count並賦值 22 23 System.out.println("在靜態方法 method2()中的 count="+count); // 打印count 24 25 return count; 26 27 } 28 29 public static void PrintCount() { 30 31 // 靜態方法PrintCount 32 33 count += 2; 34 35 System.out.println("在靜態方法 PrintCount()中的 count="+count); // 打印count 36 37 } 38 39 public static void main(String[] args) { 40 41 StaticMethod sft = new StaticMethod(); 42 43 // 通過實例對象調用實例方法 44 45 System.out.println("method1() 方法返回值 intro1="+sft.method1()); 46 47 // 直接調用靜態方法 48 49 System.out.println("method2() 方法返回值 intro1="+method2()); 50 51 // 通過類名調用靜態方法,打印 count 52 53 StaticMethod.PrintCount(); 54 55 } 56 57 }
運行該程序后的結果如下所示:1 在靜態方法 method1()中的 count=2
2 3 method1() 方法返回值 intro1=2 4 5 在靜態方法 method2()中的 count=4 6 7 method2() 方法返回值 intro1=4 8 9 在靜態方法 PrintCount()中的 count=6
在該程序中,靜態變量 count 作為實例之間的共享數據,因此在不同的方法中調用 count,值是不一樣的。從該程序中可以看出,在靜態方法 method1() 和 PrintCount() 中是不可以調用非靜態方法 method1() 的,而在 method1() 方法中可以調用靜態方法 method2() 和 PrintCount()。
在訪問非靜態方法時,需要通過實例對象來訪問,而在訪問靜態方法時,可以直接訪問,也可以通過類名來訪問,還可以通過實例化對象來訪問。(拼多多培訓)