Java中的Static修飾符


static(靜態、修飾符):static修飾成員變量時:static修飾成員變量時,那么該成員變量的數據就是一個共享的數據.


靜態成員變量的訪問方式:
方式一: 使用對象進行訪問。
對象.屬性名
方式二:可以使用類名進行訪問。
類名.屬性名


注意:
1. 非靜態成員變量不能類名直接訪問,只能使用對象進行訪問。
2. 千萬不要為了方便訪問成員變量而使用static修飾,一定要是該數據是共享數據 時才使用static修飾。

static修飾方法(靜態的成員方法):
訪問方式:
方式一:可以使用對象進行訪問。
對象.靜態的函數名();

方式二:可以使用類名進行訪問。

類名.靜態函數名字。

推薦使用是類名直接訪問靜態的成員。

靜態的成員變量與非靜態的成員變量的區別:
1. 作用上的區別:
1. 靜態的成員變量的作用共享一個 數據給所有的對象使用。
2. 非 靜態的成員變量的作用是描述一類事物的公共屬性。
2. 數量與存儲位置上的區別:
1. 靜態成員變量是存儲方法 區內存中,而且只會存在一份數據。
2. 非靜態的成員變量是存儲在堆內存中,有n個對象就有n份數據。
3. 生命周期的區別:
1. 靜態的成員變量數據是隨着類的加載而存在,隨着類文件的消失而消失。
2.非靜態的成員數據是隨着對象的創建而存在,隨着 對象被垃圾回收器回收而消失。

 

靜態函數要注意的事項:
1. 靜態函數是可以調用類名或者對象進行調用的,而非靜態函數只能使用對象進行調用。
2. 靜態的函數可以直接訪問靜態的成員,但是不能直接訪問非靜態的成員。
原因:靜態函數是可以使用類名直接調用的,這時候可能還沒有存在對象,
而非靜態的 成員數據是隨着對象 的存在而存在的。

3. 非靜態的函數是可以直接訪問靜態與非靜態的成員。
原因:非靜態函數只能由對象調用,當對象存在的時候,靜態數據老早就已經存在了,而非靜態
數據也隨着對象的創建而存在了。

4. 靜態函數不能出現this或者super關鍵字。
原因:因為靜態的函數是可以使用類名調用的,一旦使用類名調用這時候不存在對象,而this
關鍵字是代表了一個函數 的調用者對象,這時候產生了沖突。

靜態的數據的生命周期:靜態的成員變量數據是優先於對象存在的。


static什么時候修飾一個函數?

如果一個函數沒有直接訪問到非靜態的成員時,那么就可以使用static修飾了。 一般用於工具類型的方法

靜態函數不能訪問非靜態的成員?
靜態函數只要存在有對象,那么也可以訪問非 靜態的數據。只是不能直接訪問而已。


免責聲明!

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



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