根据前面的分析,来看下面几段代码输出:
public class StringTest {
public static void main(String[] args)
{
String ab="ab";
String cd="cd";
String abcd="abcd";
String abcd1="ab"+"cd";//常量的值在编译时就已经确定
if(abcd==abcd1)
System.out.println("\"ab\"和\"cd\"新产生了一个String对象");
else System.out.println("\"ab\"和\"cd\" 没有产生了一个String对象");
String abcd2=ab+"cd";
if(abcd==abcd2)
{
System.out.println("ab和\"cd\"新产生了一个String对象");
}
else System.out.println("ab和\"cd\"没有产生了一个String对象");
String abcd3="ab"+cd;
if(abcd==abcd3)
{
System.out.println("\"ab\"和cd新产生了一个String对象");
}
else System.out.println("\"ab\"和cd 没有产生了一个String对象");
}
}
输出结果为:
"ab"和"cd"新产生了一个String对象
ab和"cd"没有产生了一个String对象
"ab"和cd 没有产生了一个String对象