個人備忘 final修飾符

2021-06-04 15:57:56 字數 511 閱讀 9330

public class finaltest 

}

執行結果為:

-1919389836

-1992659212

14576877

14576877

final修飾符表示只是指向固定的位址,並不能代表是固定的數值

可見,final只對引用的「值」(也即它所指向的那個物件的記憶體位址)有效,它迫使引用只能指向初始指向的那個物件,改變它的指向會導致編譯期錯誤。至於它所指向的物件的變化,final是不負責的。這很類似==操作符:==操作符只負責引用的「值」相等,至於這個位址所指向的物件內容是否相等,==操作符是不管的。 理解final問題有很重要的含義。許多程式漏洞都基於此----final只能保證引用永遠指向固定物件,不能保證那個物件的狀態不變。在多執行緒的操作中,乙個物件會被多個執行緒共享或修改,乙個執行緒對物件無意識的修改可能會導致另乙個使用此物件的執行緒崩潰。乙個錯誤的解決方法就是在此物件新建的時候把它宣告為final,意圖使得它「永遠不變」。其實那是徒勞的。

final修飾符和abstract修飾符

用final修飾的類無法被繼承 用final修飾的方法可以被繼承但是不能被重寫 用final修飾的變數表示常量,只能賦值一次 abstract修飾符可以修飾方法也可以修飾類,如果修飾方法,那麼這個方法就是抽象方法,如果修飾類,那麼就是抽象類。抽象類中可以沒有抽象方法,但是如果有乙個類中有抽象方法,那...

final修飾符解析

1.final變數 final變數定義 final變數一經初始化就不能再指向其它物件。在c 中它是乙個const指標,而不是指向const變數的指標,const指標的意思是說它只能一直指向初始化時的那個位址,但那個位址中物件本身是可以修改的。而指向const變數的指標是說物件本身是不能修改的。str...

final 修飾符使用

將以下 copy到eclipse中,可看出效果 用final修飾的方法無法重寫 public class main class maintmp extends main 呼叫 public void getsay 過載 public string say int i,string s 用final修...