在java中为什么说String是不可变的

如果要了解String的不可变性,可以先在jdk1.8中找到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类是由final修饰的,这代表着String类不可被继承,即无法被继承的子类修改
②String类的底层数据结构为char数组,并且该数组被final修饰,也就代表着value[]不可被修改指向其他数组,即String不能被改变
③因为Java研发者认为共享带来的好处大于可变,所以在String类中没有发现任何一个修改value数组内容的方法

上一篇:PHP array_values()


下一篇:枚举类