靜態變數、例項變數;靜態方法、非靜態方法。
在語法定義上的區別:靜態變數前要加
static
關鍵字,而例項變數前則不加。
在程式執行時的區別
:例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數
。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何例項物件,靜態變數就會被分配空間,靜態變數就可以被使用了。
總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。
例如,對於下面的程式,無論建立多少個例項物件,永遠都只分配了乙個
staticvar
變數,並且每建立乙個例項物件,這個
staticvar
就會加1
;但是,每建立乙個例項物件,就會分配乙個
instancevar
,即可能分配多個
instancevar
,並且每個
instancevar
的值都只自加了1次。
public class varianttest
假如建立4個例項:結果如下:
staticvar=1,instancevar=1
staticvar=2,instancevar=1
staticvar=3,instancevar=1
staticvar=4,instancevar=1
從結果我們可以看出,只分配了乙個staticvar
變數,而分配了4個instancevar變數
乙個static
方法內部不可以發出對非
static
方法。因為
非static
方法是要與物件關聯在一起的,必須建立乙個物件後,才可以在該物件上進行方法呼叫,
而static
方法呼叫時不需要建立物件,可以直接呼叫
。也就是說,當乙個
static
方法被呼叫時,可能還沒有建立任何例項物件,如果從乙個
static
方法中發出對非
static
方法的呼叫,那個非
static
方法是關聯到哪個物件上的呢?這個邏輯無法成立!
java基礎之static(靜態)
靜態的屬性 方法等屬於類而不是物件。靜態的方法可以由類直接呼叫,不需要將類例項化。本篇主要說明 1 態的 成員變數要比構造方法先執行。2 子類的構造方法會預設去呼叫父類的不帶引數的構造方法,如果父類不提供不帶引數的構造方法,則子類的構造方法要顯示使用 super param 去呼叫父類的帶引數的構造...
java基礎筆記之static
專案空檔期,趁此閒暇時,將大學時做的筆記整理一下 後來才明白那個特別兇的人對我們的良苦用心 廢話不多說了,上筆記.一 靜態成員變數 static 特徵 1.所有該類的物件共享靜態成員變數的資料,節約空間 2.靜態成員變數的資料先於該類的物件存在。也就是說,靜態成員變數是屬於類的 2 物件.靜態成員變...
Java基礎知識 static
一.變數 static修飾的變數稱為 靜態變數,類變數或,成員變數,全域性變數。1.在類被載入的時候就被初始化,與類關聯,只要類存在,static變數就存在。而非static修飾的變數需要物件new出來才能劃分儲存空間,與具體的物件對應,且該變數僅為當前變數擁有。2.static修飾的變數在載入的時...