目錄
- final關鍵字
- final修飾變數
- final修飾方法
- final修飾類
- static關鍵字
- static修飾變數
- static修飾方法
- static 修飾代碼塊
- static定義內部類
- 關于初始化順序
final關鍵字
final修飾變數
被修飾的變數不能被改寫
對于基本型別來說,其值不能改變
對于參考型別(物件),物件的參考不能改變,但物件內部的屬性是可以改變的
tips:在并發編程中,適當用final修飾一些只讀變數,有利于減少額外的同步開銷
final修飾方法
被修飾的方法不能被子類重寫
private方法隱式被定為final,所以若子類中定義的方法和父類中的private方法命名相同,那么此時子類并不是重寫該父類方法,而是定義了一個新的方法
final修飾類
被修飾的類不能被繼承
static關鍵字
static關鍵字只能定義在類中,不能定義在任何方法中
static修飾變數
用它修飾的變數叫靜態變數,也稱為類變數,該變數為類所有,即static只能定義在類中,不能在方法中,在記憶體中只存在一份
public class X {
private int a; //實體變數
private static int b; //靜態變數
public static void main(String[] args) {
X x = new X(); //創建一個實體
int a = x.a;
int b = X.b;
}
}
每創建一個實體,就會產生一個實體變數,與實體共生死
static修飾方法
靜態方法必須要實作,不能是抽象方法,
用它修飾的方法叫靜態方法,類加載時靜態方法會一起加載,否則需要先實體化類才能加載方法,
static方法就是沒有this的方法,即不用創建物件就能訪問方法
用類名.方法名進行訪問
注意:靜態方法內部不能呼叫非靜態方法,反過來可以;靜態方法是類的方法,非靜態方法是物件的方法
static 修飾代碼塊
用它修飾的代碼塊叫靜態代碼塊,靜態代碼塊可以置于類中的任何地方,類中可以有多個 static 塊,在類初次被加載的時候,static 代碼塊按照順序來執行,每個 static 修飾的代碼塊只能執行一次,
static {
....
}
static定義內部類
public class OuterClass {
class InnerClass {//非靜態內部類
...
}
static class StaticInnerClass {//靜態內部類
...
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass(); //外部類實體
InnerClass innerClass = outerClass.new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
}
非靜態內部類依賴于外部類的實體,即需要先創建外部類實體,才能用這個實體去創建非靜態內部類,而靜態內部類不需要
同時,靜態內部類不能訪問外部類的非靜態的變數和方法
關于初始化順序
static修飾的變數和代碼塊優先于實體變數和普通陳述句塊,靜態變數和靜態陳述句塊的初始化順序取決于它們在代碼中的順序,


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530510.html
標籤:Java
下一篇:演算法筆記1
