首頁 >Java >java教程 >C++和Java中static關鍵字的簡單比較

C++和Java中static關鍵字的簡單比較

青灯夜游
青灯夜游原創
2019-03-14 14:21:232983瀏覽

Static關鍵字在C 和Java中幾乎用於相同的目的,但仍有些許不同之處。以下這篇文章就來帶大家了解一下在C 和Java中static關鍵字的異同點,希望對大家有幫助。

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--; 
   } 
}

相關影片教學推薦:《Java教學》、《C 教學

以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是C++和Java中static關鍵字的簡單比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn