這篇文章將為大家詳細(xì)講解有關(guān)C++和Java中static關(guān)鍵字有什么區(qū)別,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
隨州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
C++和Java中static關(guān)鍵字的相同點
1、靜態(tài)數(shù)據(jù)成員:
在C++和Java中靜態(tài)數(shù)據(jù)成員都是類成員,并在所有對象之間共享。例如,在下面的Java程序中,靜態(tài)變量計數(shù)用于計算所創(chuàng)建的對象的數(shù)量。
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("共創(chuàng)建了" + count + " 個對象"); } }
輸出:
共創(chuàng)建了2個對象
2、靜態(tài)成員方法
在C++和Java中聲明為static的方法是類成員,并具有以下限制:
1)、它們只能調(diào)用其他靜態(tài)方法。例如,以下程序中fun()是非靜態(tài)的,但它在靜態(tài)main()中調(diào)用,所以會編譯失敗。
class Main { public static void main(String args[]) { System.out.println(fun()); } int fun() { return 20; } }
2)、必須只訪問靜態(tài)數(shù)據(jù)。
3)、無法訪問this或super。例如,以下程序在編譯時失敗。
class Base { static int x = 0; } class Derived extends Base { public static void fun() { System.out.println(super.x); // 編譯器錯誤:不能從靜態(tài)上下文引用非靜態(tài)變量 } }
說明:
C++和Java都可以在不創(chuàng)建對象的情況下訪問靜態(tài)數(shù)據(jù)成員和靜態(tài)方法??梢允褂妙惷L問它們。例如,在以下程序中,無需任何對象即可訪問靜態(tài)數(shù)據(jù)成員計數(shù)和靜態(tài)方法fun()。
class Test { static int count = 0; public static void fun() { System.out.println("調(diào)用了靜態(tài)方法fun()"); } } class Main { public static void main(String arr[]) { System.out.println("Test.count = " + Test.count); Test.fun(); } }
C++和Java中static關(guān)鍵字的不同點
1、靜態(tài)塊
與C ++不同,Java支持一個特殊的塊,稱為靜態(tài)塊(也稱為靜態(tài)子句),可用于類的靜態(tài)初始化;靜態(tài)塊內(nèi)的此代碼僅執(zhí)行一次。
2、靜態(tài)局部變量
與C ++不同,Java不支持靜態(tài)局部變量。例如,以下Java程序在編譯時失敗。
class Test { public static void main(String args[]) { System.out.println(fun()); } static int fun() { static int x= 10; //編譯器錯誤:不允許靜態(tài)局部變量 return x--; } }
關(guān)于C++和Java中static關(guān)鍵字有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。