Java深入理解之關鍵字

2021-09-09 05:54:35 字數 1341 閱讀 4763

1.資料

宣告資料為常量,可以是編譯時常量,也可以是在執行時被初始化後不能被改變的常量

對於基本型別,final使數值不變

對於引用型別,final 使引用不變,也就不能引用其它物件,但是被引用的物件本身是可以修改的。

2.方法

宣告方法不能被子類重寫。

private 方法隱式地被指定為 final,如果在子類中定義的方法和基類中的乙個 private 方法簽名相同,此時子類的方法不是重寫基類方法,而是在子類中定義了乙個新的方法。

3.類宣告的類不允許被繼承

1.靜態變數

靜態變數:又稱為類變數,也就是說這個變數屬於類的,類所有的例項都共享靜態變數,可以直接通過類名來訪問它。靜態變數在記憶體中只存在乙份。

例項變數:每建立乙個例項就會產生乙個例項變數,它與該例項同生共死。

public class a 

}

2.靜態方法

靜態方法在類載入時已經存在,它不依賴任何例項,所以靜態方法必須有實現,不能是抽象的方法

public abstract class a 

// public abstract static void func2(); // illegal combination of modifiers: 'abstract' and 'static'

}

只能訪問所屬類的靜態欄位和靜態方法,方法中不能有 this 和 super 關鍵字。

3.靜態語句塊

靜態語句塊在類初始化時執行一次。

public class a 

public static void main(string args)

}

4.靜態內部類

非靜態內部類依賴於外部類的例項,而靜態內部類不需要。

public class outerclass 

static class staticinnerclass

public static void main(string args)

}

靜態內部類不能訪問外部類的非靜態的變數和方法。

5初始化順序

靜態變數和靜態語句塊優先於例項變數和普通語句塊,靜態變數和靜態語句塊的初始化順序取決於它們在**中的順序。

存在繼承的情況下,初始化順序為:

父類(靜態變數、靜態語句塊)

子類(靜態變數、靜態語句塊)

父類(例項變數、普通語句塊)

父類(建構函式)

子類(例項變數、普通語句塊)

子類(建構函式)

深入理解Java Volatile關鍵字

1.volatile關鍵字的作用是什麼?a.當乙個變數被定義為volatile之後,它將具備兩種特性 一 保證此變數對所有執行緒的可見性 可見性的意思為 當某個執行緒對volatile變數的值進行了修改,其他的執行緒是可以立即得知的 而普通的變數是無法做到這一點的,執行緒先是對工作記憶體當中的普通變...

深入理解關鍵字 const static

對於const關鍵字,我們習慣性的將它直接看作常量,但當你編譯下面 時,會發現與我們之前的理解有所偏差 const int size int arr size c 不能通過 cpp 順利執行 在定義陣列時,必須指定陣列元素個數為常量,但在c中卻不能通過,以此可以推翻const修飾的值是常量。參考 c...

深入理解volatile關鍵字

併發的三大性質 併發分析的切入點分為兩個核心,三大性質 public class volatiledemo thread.start try catch interruptedexception e isover true volatile修飾的共享變數進行寫操作時,會多出lock字首的指令,實現快...