㈠
String s1="a"+"bc";
String s2="ab"+"c";
s1==s2的结果是true
㈡
String a="a";
String bc ="bc";
String s1="a"+"bc";
String s2=a + bc;
s1==s2的结果就是false
请问对于第㈠和第㈡种情况,在内存中发生了什么.
第一种情况下,常量池是不是创建了a,bc,ab,c和abc五个常量?s1和s2共享了abc这个常量?
第二种情况下,和第一种的不同在哪儿?
小编这里有一份Java学习资料,加我的Java学习群:985331340免费获取。
反编译一下就明了了.
class test
{
public static void main (String[] args) throws java.lang.Exception
{
String a="a";
String ab="ab";
String bc="bc";
String c="c";
String abc1=a+bc;
String abc2=ab+c;
System.out.println(abc1==abc2);
String abc3="a"+"bc";
//这几行
String abc4="ab"+"c";
//都是使用
String abc5="a"+"b"+"c";//常量相加的
System.out.println(abc3==abc4);
System.out.println(abc4==abc5);
}
}
反编译出来是这个样子