从一开始就说string是不可变对象,但是为什么会具有这种特性呢。真去探究一下后,发现比想象中的要直观简单多了。
直接看看源码
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
......
}
很显然,其实string对象就是由一个char数组构成的,最重要的是这个value是final的,这不就意味着一旦赋值后自然是无法更改的。
其实很多特性探究一下也没那么难的。