String str = new String(‘string’);
- 这段代码实际上new 两次
1.字面量声明在方法常量去中 (实际上是byte数组的一个引用地址,byte数组前final修饰导致string是一个不可修改的,长度固定。实现方式见源码。
2.new生成堆区只是字面量的副本有必要提下是new多少个空间里面存在多少个,而返回也是他的引用地址即可被gc回收。
3.stingBuffer和字符串的原理相同,但是未有finally修饰,即byte[]可以修改。toValue()生成字符串。