java code
String a = "ab";
String b = "a" + "b";
System.out.println(a==b);
true or false?
true
String a = "abc";
String b="ab";
String c=b+"c";
System.out.println(a==c);
true or false?
false
原因:
String a = "ab"+"c";
这里会被编译器自动优化成a = "abc";它是存在在栈中的
String a="ab";
String c=b+"c";
这里,实际上a是一个对象了,那么+操作符会把结果放到堆内存中,这样,两块内存是不一样的,虽然内容是一样的
所以它们比较就得到false了.