static的用法及作用


static可以用來修飾屬性、方法和代碼塊。static修飾的變量屬於這個類所有,既由這個類創建的所有對象共用一個static變量。通常把static修飾的屬性和方法稱為類屬性(類變量)、類方法。不使用static修飾的屬性和方法屬於單個對象,通常稱為實例屬性(實例變量)、實例方法。使用static修飾方法的最常見的例子是我們熟悉的main()方法。下面通過一個示例學習是static的用法及使用static修飾屬性和代碼塊,是如何分配內存空間的。代碼示例如下:

 

 運行結果如圖所示:

 

 從結果中可以得出以下結論:

在加載類的過程中,完成靜態變量的內存分配,再執行靜態代碼塊,兩者是在創建對象之前執行的。

類屬性、類方法可以通過類名和對象名訪問,實例屬性、實例方法只能通過對象名訪問。

類方法只能訪問類屬性和其他類方法。

注意:

靜態方法中不能使用this和super關鍵字(super與繼承有關)。

我們可以通過設置斷點調試的方式觀察執行順序,以此加深對static的了解。另外,在使用常量時,為了方便調用,推薦使用static來修飾。例如:

static final String SEX_MAN="man";

在使用時可以直接通過類名。SEX_MAN方式使用。這時稱這個常量為靜態變量。

靜態方法
靜態方法可以直接通過類名調用,任何的實例也都可以調用,
因此靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法(就是不帶static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。
因為實例成員與特定的對象關聯!這個需要去理解,想明白其中的道理,不是記憶!!!
因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。
例如為了方便方法的調用,Java API中的Math類中所有的方法都是靜態的,而一般類內部的static方法也是方便其它類對該方法的調用。
靜態方法是類內部的一類特殊方法,只有在需要時才將對應的方法聲明成靜態的,一個類內部的方法一般都是非靜態的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM