static
關鍵字修飾的域
class
employee
這裡employee
物件有乙個例項域id
和乙個靜態域nextid
,每乙個employee
物件都有乙個例項域id
,但是所有的物件共享乙個靜態域nextid
。假設有1000個employee
物件,則有1000個例項域id
,但是,只有乙個靜態域nextid
。
即使沒有乙個employee
物件,靜態域nextid
也存在。它屬於類,不屬於物件。
static final
修飾的變數為靜態常量,注意這裡的關鍵字,少乙個都不是靜態常量。
public
class
math
在程式中,可以使用math.pi
的形式獲得這個常量
如果關鍵字static
被省略,pi
就變成了math
類的乙個例項域。需要通過math
類的物件來訪問pi
,並且每乙個math
物件都有它的乙份pi
拷貝。
如果關鍵字final
被省略,pi
就變成了乙個靜態域。
靜態方法是一種不能向物件實施操作的方法。例如:math
類的pow
方法就是乙個靜態方法,在運算時,不使用任何math
物件,換句話說,沒有隱式的引數this
。
因為靜態方法不能操作物件,所以不能在靜態方法中訪問例項域,但是靜態方法可以訪問自身類中的靜態域。可以使用物件呼叫靜態方法,但是這樣容易引起混淆,因為計算的結果與物件毫無關係,建議還是使用類名,而不是類物件呼叫靜態方法。
在下面兩種情況下使用靜態方法:
乙個方法不需要訪問物件的狀態,其所需的引數都是通過顯式的提供(例如:math.pow
)
乙個方法只需訪問類的靜態域(例如:employee.getnextid
)
C 靜態方法,靜態變數
使用static修飾符修飾的方法是靜態方法,反之是非靜態方法,靜態方法和靜態變數在建立後始終存在於同一塊記憶體中,它不屬於某乙個類的具體例項,而是屬於類本身,而每建立乙個類的例項,系統都會為每乙個非靜態成員分配乙個記憶體空間,而靜態成員無論建立多少例項,類的靜態成員在記憶體中都 只占有同一塊記憶體區...
Java static靜態變數 靜態方法
1.static關鍵字作用 static關鍵字修飾類成員變數 成員方法 內部類可以使這些類成員的建立和使用,直接與類相關而與具體例項無關。2.靜態變數 類變數 只在系統載入類時分配空間及初始化,建立該類例項時不再分配空間,為所有例項提供共享類的靜態變數。可進行例項間的通訊或者統計跟蹤是該類例項的數目...
靜態變數與靜態方法
static 可實現所有的物件共享乙個成員變數。被 static 修飾的成員稱為靜態成員或類成員。它屬於整個類所有,而不是某個物件所有,即被類的所有物件所共享。訪問static成員變數有兩種方式 直接用類名.成員變數名訪問 定義類的物件,使用物件.成員變數名訪問。public class name ...