Java中static、final、static final的區別
1. final:
final可以修飾:屬性,方法,類,區域性變數(方法中的變數)
final修飾的屬性的初始化可以在編譯期,也可以在執行期,初始化後不能被改變。
final修飾的屬性跟具體物件有關,在執行期初始化的final屬性,不同物件可以有不同的值。
final類不能被繼承,沒有子類,final類中的方法預設是final的
final方法不能被子類的方法覆蓋,但可以被繼承
final成員變數表示常量,只能被賦值一次,賦值後不能再被改變
final不能用於修飾構造方法
private不能被子類方法覆蓋,private型別的方法預設是final型別的
對於基本型別資料,final會將值變為一個常數(建立後不能被修改);但是對於物件控制程式碼(亦可稱作引用或者指標),final會將控制程式碼變為一個常數(進行宣告時,必須將控制程式碼初始化到一個具體的物件。而且不能再將控制程式碼指向另一個物件。但是,物件的本身是可以修改的。這一限制也適用於陣列,陣列也屬於物件,陣列本身也是可以修改的。方法引數中的final控制程式碼,意味著在該方法內部,我們不能改變引數控制程式碼指向的實際東西,也就是說在方法內部不能給形參控制程式碼再另外賦值)。
2. static:
static可以修飾:屬性,方法,程式碼段,內部類(靜態內部類或巢狀內部類)
static修飾的屬性的初始化在編譯期(類載入的時候),初始化後能改變。
static和“this、super”勢不兩立,static跟具體物件無關,而this、super正好跟具體物件有關。
static不可以修飾區域性變數。
被static修飾的成員變數和成員方法獨立於該類的任何物件。也就是說,它不依賴類特定的例項,被類的所有例項共享。只要這個類被載入,Java虛擬機器就能根據類名在執行時資料區的方法區內定找到他們。因此,static物件可以在它的任何物件建立之前訪問,無需引用任何物件。
3. static final:
static修飾的屬性強調它們只有一個,final修飾的屬性表明是一個常數(建立後不能被修改)。static final修飾的屬性表示一旦給值,就不可修改,並且可以通過類名訪問。
static final也可以修飾方法,表示該方法不能重寫,可以在不new物件的情況下呼叫
相關文章
- Java中final與static final的區別Java
- java中的Static、final、Static final各種用法Java
- final修飾和static final修飾的區別
- Java中static、final用法小結Java
- java中的static和final關鍵字Java
- static/final/常量模式模式
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- final與static關鍵字的區別?(skycto JEEditor)
- 反射修改 static final 變數反射變數
- Java基礎——final和static關鍵字Java
- Java關鍵字static、final使用小結Java
- java final和static關鍵字學習Java
- 徹底搞定Java關鍵字final、staticJava
- java基礎----->Static 和 Final 關鍵字Java
- Java關鍵字final、static使用總結Java
- 陣列宣告為public final static缺陷陣列
- this,構造器,static,final,單例模式單例模式
- Java中final、finally、finalize的區別Java
- Java中final,finally,finalize的區別Java
- JAVA 裡static 和volatile的區別Java
- Java中final、finally和finalize的區別Java
- Java中final,finalize和finally的區別Java
- static 和extern的區別
- ViewState Session Static區別ViewSession
- 【java】final、finally、finallize的區別Java
- java中final類 跟final方法Java
- const與static的區別
- 【Java面試題系列】:Java中final finally finalize的區別Java面試題
- PHP 中 bind 的用法 self 和 static 的區別PHP
- Java中static的含義Java
- Java之final、finalize、finally的區別Java
- 簡單易懂 —— this、self、static 的區別
- self::class和static::class的區別
- const、define 和 static 的區別
- java中的static關鍵字Java
- java中static作用詳解Java
- PHP new self()和new static()的區別PHP
- CWE-500:宣告為public static的域沒有標記final缺陷簡介