Static關鍵字在C 和Java中幾乎用於相同的目的,但仍有些許不同之處。以下這篇文章就來帶大家了解一下在C 和Java中static關鍵字的異同點,希望對大家有幫助。
C 和Java中static關鍵字的相同點
1、靜態數據成員:
在C 和Java中靜態資料成員都是類別成員,並在所有物件之間共用。例如,在下面的Java程式中,靜態變數計數用於計算所建立的物件的數量。
class Test { static int count = 0; Test() { count++; } public static void main(String arr[]) { Test t1 = new Test(); Test t2 = new Test(); System.out.println("共创建了" + count + " 个对象"); } }
輸出:
共创建了2个对象
2、靜態成員方法
在C 和Java中宣告為static的方法是類別成員,並且具有以下限制:
1)、它們只能呼叫其他靜態方法。例如,以下程式中fun()是非靜態的,但它在靜態main()中調用,所以會編譯失敗。
class Main { public static void main(String args[]) { System.out.println(fun()); } int fun() { return 20; } }
2)、必須只存取靜態資料。
3)、無法存取this或super。例如,以下程式在編譯時失敗。
class Base { static int x = 0; } class Derived extends Base { public static void fun() { System.out.println(super.x); // 编译器错误:不能从静态上下文引用非静态变量 } }
說明:
C 和Java都可以在不建立物件的情況下存取靜態資料成員和靜態方法。可以使用類別名稱存取它們。例如,在以下程式中,無需任何物件即可存取靜態資料成員計數和靜態方法fun()。
class Test { static int count = 0; public static void fun() { System.out.println("调用了静态方法fun()"); } } class Main { public static void main(String arr[]) { System.out.println("Test.count = " + Test.count); Test.fun(); } }
C 和Java中static關鍵字的不同點
1、靜態區塊
與C 不同,Java支援一個特殊的區塊,稱為靜態區塊(也稱為靜態子句),可用於類別的靜態初始化;靜態區塊內的此程式碼僅執行一次。
2、靜態局部變數
與C 不同,Java不支援靜態局部變數。例如,以下Java程式在編譯時失敗。
class Test { public static void main(String args[]) { System.out.println(fun()); } static int fun() { static int x= 10; //编译器错误:不允许静态局部变量 return x--; } }
以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是C++和Java中static關鍵字的簡單比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!