簡單來說就是因爲String對象是private的,裏沒有給出get方法,因此,我們並不能通過什麼方式來改變它的值。還有一點,String裏面的Filed設置的爲Final。這也是它的值不
能被改變的原因。
那麼,我們平時對一個String對象初始化賦值之後,比如說String s = “hello”;但是卻可以通過s=”world”;來將s的值改變啊?其實這並不是將以前的那個s的值改變了,在
這裏我要說的是,這裏的s只是一個引用,真正存放”world”的內存並不是以前那個存放”hello”的內存,而是s又指向的一個新開闢的內存。
-
那麼,String對象真的不能被改變了麼?當然不是,我們可以通過反射更改String中Filed的訪問權限來更改。
參考文章:http://www.codeceo.com/article/why-java-string-immutable.html