final和static的區別

2021-09-18 06:20:44 字數 957 閱讀 6964

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物件的情況下呼叫。

Final和static的區別

首先 final 和static 是完全沒有關係的。final 作用 1.final 修飾屬性,表示屬性 只能賦值一次 1 基本型別 值不能被修改 2 引用型別 引用不可以被修改該。如 public final int rows 1 此時變數rows不管在什麼地方引用,都不能被再次賦值。但是,可以先...

static和final的區別

修飾變數 靜態變數隨著類載入時被完成初始化,記憶體只有乙個,且jvm也只會為他分配一次記憶體,所有類共享靜態變數。修飾方法 在類載入的時候就存在,不依賴任何例項。static方法必須實現,不能用abstract修飾。即abstract修飾的方法不可謂static。修飾 塊 在類載入完成之後就會執行靜...

final和static的區別

final可以修飾類 成員方法和變數 成員變數和區域性變數 1.final修飾的類不可以被繼承 2.final修飾的方法不可以被重寫 3.final修飾的變數表示常量,只能被賦值一次 注意 final修飾成員變數時,預設沒有初始值。賦值方法 選擇其中一種 a.宣告時賦值 b.構造方法中賦值 c.塊中...