根据前面的分析,来看下面几段代码输出:
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对象
本文通过几个具体的Java代码示例展示了不同字符串拼接方式下,String对象的行为差异。特别是当使用字符串字面量与变量进行拼接时,是否会产生新的String对象,这对于理解Java中String的实现机制非常重要。
5934

被折叠的 条评论
为什么被折叠?



