導航:首頁 > 編程語言 > javastatic修飾類

javastatic修飾類

發布時間:2024-07-02 13:28:59

1. java靜態類(static class)是什麼意思

java一半不用static 修飾類,除非這個類是內部類,
在定義內部類的時候,可以在其前面加上一個許可權修飾符static。此時這個內部類就變為了靜態內部類。不過由於種種的原因,如使用上的限制等等因素(具體的使用限制,筆者在下面的內容中會詳細闡述),在實際工作中用的並不是很多。但是並不是說其沒有價值。在某些特殊的情況下,少了這個靜態內部類還真是不行。如在進行代碼程序測試的時候,如果在每一個Java源文件中都設置一個主方法(主方法是某個應用程序的入口,必須具有),那麼會出現很多額外的代碼。而且最主要的時這段主程序的代碼對於Java文件來說,只是一個形式,其本身並不需要這種主方法。但是少了這個主方法又是萬萬不行的。在這種情況下,就可以將主方法寫入到靜態內部類中,從而不用為每個Java源文件都設置一個類似的主方法。這對於代碼測試是非常有用的。

2. Java中static的作用

1.static 成員變數

在 Java 中還支持用 static 修飾的內部類,稱為靜態內部類。靜態成員內部類的特點主要是它本身是類相關的內部類,所以它可以不依賴於外部類實例而被實例化。靜態內部類不能訪問其外部類的實例成員(包括普通的成員變數和方法),只能訪問外部類的類成員(包括靜態成員變數和靜態方法)。即使是靜態內部類的實例方法(非靜態成員方法)也不能訪問其外部類的實例成員。

3. java中什麼時候該用static修飾方法有什麼好處或者壞處

有時你希望定義一個類成員,使它的使用完全獨立於該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明為static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變數都聲明為static。static 成員的最常見的例子是main( ) 。因為在程序開始執行時必須調用main() ,所以它被聲明為static。

聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共用同一個static變數。聲明為static的方法有以下幾條限制:
·
它們僅能調用其他的static 方法。
·
它們只能訪問static數據。
·
它們不能以任何方式引用this 或super(關鍵字super 與繼承有關,在下一章中描述)。
如果你需要通過計算來初始化你的static變數,你可以聲明一個static塊,Static 塊僅在該類被載入時執行一次。下面的例子顯示的類有一個static方法,一些static變數,以及一個static 初始化塊:
// Demonstrate static variables,methods,and blocks.


classUseStatic{
staticinta=3;
staticintb;

staticvoidmeth(intx){
System.out.println("x="+x);
System.out.println("a="+a);
System.out.println("b="+b);

}

static{
System.out.println("Staticblockinitialized.");
b=a*4;

}

publicstaticvoidmain(Stringargs[]){
meth(42);
}
}


一旦UseStatic 類被裝載,所有的static語句被運行。首先,a被設置為3,接著static 塊執行(列印一條消息),最後,b被初始化為a*4 或12。然後調用main(),main() 調用meth() ,把值42傳遞給x。3個println ( ) 語句引用兩個static變數a和b,以及局部變數x 。

注意:在一個static 方法中引用任何實例變數都是非法的。

下面是該程序的輸出:

Static block initialized.
x = 42
a = 3
b = 12
在定義它們的類的外面,static 方法和變數能獨立於任何對象而被使用。這樣,你只要在類的名字後面加點號運算符即可。例如,如果你希望從類外面調用一個static方法,你可以使用下面通用的格式:

classname.method( )

這里,classname 是類的名字,在該類中定義static方法。可以看到,這種格式與通過對象引用變數調用非static方法的格式類似。一個static變數可以以同樣的格式來訪問——類名加點號運算符。這就是Java 如何實現全局功能和全局變數的一個控製版本。

下面是一個例子。在main() 中,static方法callme() 和static 變數b在它們的類之外被訪問。


classStaticDemo{
staticinta=42;
staticintb=99;
staticvoidcallme(){

System.out.println("a="+a);
}
}

classStaticByName{

publicstaticvoidmain(Stringargs[]){
StaticDemo.callme();
System.out.println("b="+StaticDemo.b);

}
}


下面是該程序的輸出:

a = 42
b = 99

閱讀全文

與javastatic修飾類相關的資料

熱點內容
Android50虛擬按鍵 瀏覽:202
壓縮機氣體冷卻器 瀏覽:743
proteus模擬軟體與keil編譯 瀏覽:462
如何讀pdf 瀏覽:873
單片機如何驅動電機 瀏覽:213
特效vb源碼 瀏覽:922
不屬於演算法語言 瀏覽:341
計算機ar演算法大賽 瀏覽:360
三菱fx3u編程線纜 瀏覽:698
科目四用什麼app最好 瀏覽:617
python理財 瀏覽:881
python讀csv文件內容 瀏覽:308
有難度的編程項目經驗 瀏覽:520
網購食物哪個app好 瀏覽:371
為什麼櫻校顯示伺服器錯誤 瀏覽:272
亞馬遜app購物在哪裡下載 瀏覽:329
網路顯示連接伺服器失敗怎麼回事 瀏覽:585
如何確認是256加密 瀏覽:39
安卓加密教育視頻 瀏覽:265
華為會員字體在哪個文件夾 瀏覽:582