1.不可改變---執行效率高
2.因為String這個對象基本是被所有的類對象都會使用的到了,如果可以被復寫,就會很亂套,比如map的key ,如果是一個string為key的話,String如果可以改變的話,你想想后果
3.執行效率可以這么解釋,面向對象有一個多態的性質,如果可以改變,就可以被復寫,子類如果復寫了某個方法,虛函數表就被用上了;如果是final型的,jvm就直接去用了,根本不用去虛函數表里面找
----------只要聲明成final ,JVM才不用對相關方法在虛函數表中查詢,而直接定位到string類的相關方法上,提高了執行效率。基礎類以保證執行效率為第一要素。
4.從設計思想來解釋這個 為什么要弄成final類型的
語言本身就是一種設計。任何設計思想都是會遵守一些既定的規則,這樣才能體現
一致性。無論是人類語言,還是機器語言,都有它們的約束規則。
Long, Double, Integer 之類的全都是final的 程序的基石是不可被改變的
5.也可以從安全的角度來解釋定義成final,
6.String被廣泛使用,避免多態的影響,或者他提供的函數已經非常的豐富了,你再去擴展有點多余