String 的理解
* b无法被编译器优化,只有在程序运行期来动态分配并将连接后的新地址赋给b。所以上面程序的结果也就为false。
*/
String A = "ab";
String B = "b";
String C = "a" + B;
System.out.println(A + "\t" + C + "\t" + (A == C));// false
System.out.println(A + "\t" + C + "\t" + (A.equals(C)));// true
?
/*************************************************************/
?
String AA = "ab";
final String BB = "b";
String CC = "a" + BB;
System.out.println(AA + "\t" + CC + "\t" + (AA == CC));// true
?
String AAA = "ab";
String CCC = "a" + "b";
System.out.println(AAA + "\t" + CCC + "\t" + (AAA == CCC));// true
?
String AAAA = "ab";
final String BBBB = getBBBB();
String CCCC = "a" + BBBB;
System.out.println((AAAA == CCCC)); // false
?
int a1 = 3;
int b1 = 2;
int c1 = 1 + b1;
System.out.println(a1 + "\t" + b1 + "\t" + c1 + "\t" + (a1 == c1));// true
}
?
private static String getBBBB() {
return "b";
}