為什么String是不可變的?

先放一段String類的源碼


image.png

通過源碼可以發(fā)現(xiàn),String類有一個命名為value的char數(shù)組的成員變量,并且是final修飾的。

如果被final修飾的成員變量是基本類型,那么這個成員變量一旦被賦值就不能再改變。但數(shù)組并不是基本類型,而是引用類型,所以value即使被final修飾,它里面的元素依然是可以改變的。

之所以說String類是不可變的,是因為String類沒有對外提供修改value屬性的方法(如setter方法),我們無法在外部去改變value的內(nèi)容。

那String類是覺得不可變的嗎?也不是,其實可以通過反射去修改String類對象的值。代碼如下:


image.png

執(zhí)行結(jié)果:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容