(1)都指向常量池中的abc
![13a9d683907312f3a016f22023b1ec12]()
(2)Intern方法返回常量池中的地址
![f05656562f86e6852428d1f6f2ffbee8]()
(3)注意理解这个重新指向
![d660dd005e2e4094a1731319b6e0983d]()
(4)编译器优化
![f4f304f304536dde53d880a2754b7c11]()
(5)内部源码解读
![6ab649c2370798968543b6dfe3422eef]()
代码示例
package com.baidu.www;
public class Test {
public static void main(String[] args) {
String a = "hello";
String b = "shuashua";
/**
* 1. 创建一个StringBuilder对象 StringBuilder sb = StringBuiler()
* 2. 执行sb.append("hello")
* 3. sb.append("shuashua")
* 4. sb.toString()
*
* c指向堆中的对象 (String) values[] -> 池中 "helloshuashua"
*/
String c = a + b;
String d = "helloshuashua";
System.out.println(c == d); // false
String e= "hello" + "shuashua";
System.out.println(d == e); // true
}
}
(6)例题
![34f6e2b0b6166ce5202cd1b7cf30a365]()