Java基礎 static簡述

2021-07-31 06:43:55 字數 1151 閱讀 4241

靜態變數、例項變數;靜態方法、非靜態方法。

在語法定義上的區別:靜態變數前要加

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修飾的變數在載入的時...