java中,static final和單獨static有什麼區別?

何立廷


final可以修飾:屬性,方法,類,局部變量(方法中的變量)

final修飾的屬性的初始化可以在編譯期,也可以在運行期,初始化後不能被改變。

final修飾的屬性跟具體對象有關,在運行期初始化的final屬性,不同對象可以有不同的值。

final修飾的屬性表明是一個常數(創建後不能被修改)。

final修飾的方法表示該方法在子類中不能被重寫,final修飾的類表示該類不能被繼承。

對於基本類型數據,final會將值變為一個常數(創建後不能被修改);但是對於對象句柄(亦可稱作引用或者指針),final會將句柄變為一個常數(進行聲明時,必須將句柄初始化到一個具體的對象。而且不能再將句柄指向另一個對象。但是,對象的本身是可以修改的。這一限制也適用於數組,數組也屬於對象,數組本身也是可以修改的。方法參數中的final句柄,意味著在該方法內部,我們不能改變參數句柄指向的實際東西,也就是說在方法內部不能給形參句柄再另外賦值)。

static可以修飾:屬性,方法,代碼段,內部類(靜態內部類或嵌套內部類)

static修飾的屬性的初始化在編譯期(類加載的時候),初始化後能改變。

static修飾的屬性所有對象都只有一個值。

static修飾的屬性強調它們只有一個。

static修飾的屬性、方法、代碼段跟該類的具體對象無關,不創建對象也能調用static修飾的屬性、方法等

static和“this、super”勢不兩立,static跟具體對象無關,而this、super正好跟具體對象有關。

static不可以修飾局部變量。

static final和final static沒什麼區別,一般static寫在前面。

static修飾的屬性強調它們只有一個,final修飾的屬性表明是一個常數(創建後不能被修改)。static final修飾的屬性表示一旦給值,就不可修改,並且可以通過類名訪問。

static final也可以修飾方法,表示該方法不能重寫,可以在不new對象的情況下調用。


不矯情不美麗


這個基礎問題,建議找一系列教程系統的學習一下,要是這些梳理不清楚,後邊學習更會亂成一鍋粥!給你tui 動力節點java學院 公眾號,有很多java教程,講的很細,不而且免費,希望可以幫到你。


程序員女博士


static 靜態的,修飾的域或方法直接和類相關,所有實例共享,只有一份,並且可以被更改。

static final 修飾的變量一般被當做常量,因為使用final修飾的變量的值是固定的,在整個應用中不會再被更改。(無論是基本類型還是引用,當然可變對象的引用內容還是可以更改)。


qzuser254352031


static屬性為所有對象共享的,static方法表示可以通過類名.方法名直接調用,和對象狀態無關。final修飾表示這個類,對象,方法都是不可"變"的,你們用就行,別給老子改。