package cn.stack;
public class Test_String
{
public static void main(String[] args)
{
String x = "a";
String a = "abc";
String b = "a"+"bc";
String c = x+"bc";
String d = new String("a")+"bc";
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a==d);
}
}
结果:
true
false
false
//将.class文件反编译的结果
package cn.stack;
import java.io.PrintStream;
public class Test_String
{
public static void main(String[] args)
{
String x = "a";
String a = "abc";
String b = "abc";
String c = x + "bc";
String d = new String("a") + "bc";
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a == d);
}
}
可以看出b ="ab"+"c"在编译的时候就直接编译成b="abc"了。