String
类不可变(final),内部维护的 char[] value 数组不可变(final)。
创建
方式一
String str = "abc";
字符串常量池如果有 “abc”,不创建对象;如果没有,在字符串常量池创建"abc"。

注意:字符串常量池逻辑上属于方法区,物理上存在于堆中。
方式二
String str = new String("abc");
字符串常量池如果有 “abc”,创建一个对象在堆;如果没有,在字符串常量池创建"abc",在堆中创建一个对象。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
源码中,直接共用了一个数组,因为反正 String 都是不可变的。就算你,更改了一个 String,也只是将它指向了另一个对象。

Java String详解

最低0.47元/天 解锁文章
958

被折叠的 条评论
为什么被折叠?



