一 什么是不可变对象?
不可变对象指对象一旦被创建,状态就不能再改变,任何修改都会创建一个新的对象。
二 不可变的原因
1.String的主要成员变量char value[]是private final类型的;String被声明为final class,是典型的Immutable类;源码如下
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
String底层使用的数据结构是 final修饰的字符数组,众所周知,final修饰的是常量,所以无法更改,但是加了final修饰的数组只是代表了引用不可变,不代表数组内容不可变,因此jdk为了真正防止不可变,又加了private修饰符。、
2.字符串常量池的需要
字符串常量池是Java堆内存中一个特殊的存储区域, 当创