- private final static String MESSAGE = "heima";
- public static void main(String[] args) {
- String a = "hei"+"ma";
- String b = "hei";
- String c = "ma";
- System.out.println(a==MESSAGE);
- System.out.println((b+c)==MESSAGE);
- System.out.println((b+c).equals(MESSAGE));
复制代码
首先MESSAGE是一个常量,是存在常量池中的,a的字符串也是“heima”所以会从常量池中找到“heima"而不是自己在创建一个,因而a的地址和MESSAGE的地址是一个地址。b,c从一开始的就是各自新建了一个字符串,地址也就跟a的不一样,加完了也就相当于重新创建了一个字符串重新给这个b+c分配了空间,地址也不一样 |