String

184 阅读1分钟
  1. String 是个final类;
  2. jdk7之后String的常量池迁到了HEAP里来;
  3. String.intern() 方法会检查常量池中是否有此字符串,如果没有则添加进常量池并返回;
  4. String s1 = "1" + "2"; 编译之后会优化成如下
String s = "12"
  1. String s2 = s1 + "2"; 编译之后会优化成如下
String s2 = new StringBuilder().append(s1).append("2").toString();
+ 符号会触发此操作,因此此过程java会创建三个对象,分别是 stringBuilder、12(常量)、 s对象。因此循环调用 += 时最好优化成append形式;

参考文章: