java String 两个String类型相加结果为false

public class Test {

public static void main(String[] args) {

    String a = "aa";
    String b = "aaaa";
    //a+=a;
    System.out.println(a+a);
    System.out.println(b==(a+a));
    //System.out.println(b==a);

}

}
结果如下:
aaaa
false

哪位大神帮忙看一下为什么结果是这样的

应该用equals比较。因为== 比较的是String对象的地址而equals比较的是String的内容

判断字符串相等是不能用==好的 你把它改成 System.out.println(b.equals(a+a));应该就会返回true,另外你如果不是判断而是单纯的把a+a赋值给b然后打印出来,那么就直接写 System.out.println(b=a+a);
因为在java中,=号是用来赋值的,而==是用来做基本类型判断的,equals是用做字符串判断的,各司其职吧

一楼已经是正确答案了 ==比较是这个字符串在内存中的地址

==比较的是字符串的内存地址,equals比较的是对象是否相等,a+a相当于生成了一个新的字符串对象

a+a的过程是调用StringBulider进行两次SB.append(”aa”),结果是一个SB类型值为“aaaa”的对象,储存在临时变量中。然后调用toString方法返回一个String对象和b对象进行比较,两个对象之间的==是进行地址比较,b 指向常量池中的“aaaa”,临时变量指向堆中对象,堆中对象储存一个地址指向常量池中的“aaaa”,b和临时变量的地址不同所以结果是false