目錄
一、前言
二、final關鍵字
三、String類中如何使用final關鍵字及其好處
String類的原始碼
不可變性的好處
四、總結
一、前言
相信很多小伙伴在面試的時候都被問到過“Java中的String類為什么用final修飾?”這個問題,今天帶大家一探究竟,希望小伙伴們在之后面試中遇到這個問題時,能夠很順利的回答出來,順利斬獲高薪offer,
二、final關鍵字
final是Java中的保留關鍵字,可以用來修飾類,方法和變數,其中,被final修飾的類不能被繼承即不能擁有自己的子類,被final修飾方法不能被重寫,final修飾的屬性、變數初始化之后不能被修改,
三、String類中如何使用final關鍵字及其好處
String類的原始碼

從上述原始碼我們可以發現以下兩點:
- String類用final修飾,代表String類不可被繼承,
- 用于存盤字串值的char[]陣列用private和final修飾,其中,final可以保證value的參考地址不會被修改,但是不能保證陣列中的值不會被修改,而配合private修飾符,能夠保證值不會被外部修改,這樣就能保證String類的不可變性,
那么,String類的不可變性能夠帶來哪些好處呢?
不可變性的好處
String類的不可變性帶來的好處總結主要有兩點:
- 因為String類的不可變性,才能使得JVM可以實作字串常量池;字串常量池可以在程式運行時節約很多記憶體空間,因為不同的字串變數指向相同的字面量時,都是指向字串常量池中的同一個物件,這樣一方面能夠節約記憶體,另一方面也提升了性能,
- 因為String類的不可變性,從而保證了字串物件在多執行緒環境下是執行緒安全的,如果String類是可變的,那么會引起很嚴重的安全問題,我們在很多情況下都是直接通過字串傳遞資料,比如資料庫的用戶名密碼、網路編程中的ip和埠,因為字串是不可變的,所以它的值不能被修改,如果字串是可變的,那么可以通過改變參考地址指向的值去修改字串的值,從而導致安全漏洞
四、總結
String類用final修飾一方面保證在多執行緒環境下的執行緒安全,另一方面實作字串常量池節約記憶體和提升性能,

歡迎關注小強1024實驗室,和小強一起用技術改變世界
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/189958.html
標籤:其他
上一篇:吉他指彈筆記
