String内存的分配问题

如下代码:
String a="a";
String b="b";
String ab="ab";
String ab2=a+b;
String ab3="a"+"b";

System.out.println(a=="a");//true
System.out.println(ab=="ab");//true
System.out.println(ab==ab2);//false
System.out.println(ab==ab3);//true

Q: 为什么ab==ab2结果是false?

A:因为ab2是变量a和b相加之后赋值给ab2,所以在编译的时候不能确定ab2的内容,而ab3的是“a”和”b“相加之后赋值给ab3的,所以在编译的时候就知道ab3的值。

因此ab==ab2是false而ab==ab3是true。

猜你喜欢

转载自blog.csdn.net/csdn_meng/article/details/74940068