String
拼接
字符串的拼接分为两种情况:
-
字面量的拼接
编译器优化,直接视为拼接后的结果 -
存在变量的拼接
实际调用的是StringBuilder
不在存储在StringPool中而是直接在堆中创建新的String实例。
String a=new String(“aa”) 创建了几个对象?
创建了两个,因为new在堆空间中创建了一个,并且在字符串常量池中也创建了一个。
new String(“a”) + new String(“b”) 创建了几个对象?
创建了六个对象
- 第一个对象是StringBuilder
- new
- 字符串常量池中的"a"
- 同上
- 同上
- 在由StringBuilder完成字符串变量拼接完成后返回的 toString()方法中还会创建一个新的对象
值得注意的是在后面这个问题中并没有在字符串常量池中新建字符串常量 “ab”
@Override
public String