final修飾符的三種使用場景


final有三種使用場景,各自是修飾變量、方法和類。不管哪種修飾。一旦聲明為final類型。你將不能改變這個引用了,編譯器會檢查代碼,假設你試圖再次初始化,編譯器會報錯。以下我來詳細說說每一種修飾場景。


1、修飾變量
當final修飾一個變量的時候一般把他作為常量。通常和statickeyword配合使用。

比如:
private static final String ISSUCCESS_FLAG = “true”;一般static修飾的常量都用大寫字母來表示。
在這里我寫一段代碼:

String str1 = "12";
final String str2 = "1";
String str3= "1";
boolean a=(str1==(str2+"2"));
boolean b=(str1==(str3+"2"));

這里a和b的值各自是什么?
顯然a=true,b=false
此時str2+”2”事實上就是”1”+”2”操作的是常量之間的連接操作,而str3+”2”事實上是new String(“12”);他和str1是兩個對象。內存地址不同
2、修飾方法
當一個方法被final修飾后。表示該方法不能被子類重寫。final方法有一個優點是比非final方法要快,由於在編譯時已經靜態綁定了,不須要在執行時在動態綁定。


3、修飾類
當一個類被final修飾后,表示該類是完整的,不能被繼承。比如Java中String、Integer類都是final類
final修飾的優點

  • finalkeyword提高了性能。

    JVM和Java應用都會緩存final變量。

  • final變量能夠安全的在多線程環境下進行共享。而不須要額外的同步開銷。
  • 使用finalkeyword,JVM會對方法、變量及類進行優化。
  • 不可變類創建不可變類要使用finalkeyword。不可變類是指它的對象一旦被創建了就不能被更改了。String是不可變類的代表。

    不可變類有非常多優點。譬如它們的對象是僅僅讀的,能夠在多線程環境下安全的共享,不用額外的同步開銷等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM