StringBuilder a = new StringBuilder("abc");
StringBuilder b = a.append("de");
b = b.append("f").append("g");
System.out.println("a=" + a);
System.out.println("b=" + b);
让我把队伍分开 StringBuilder b = a.append("de"); 在这里 a.append("de") 方法 a = a + "de" . ie a = "de" 那么 StringBuilder b = a.append("de") = a; 现在是stringbuilder b 以及 a 有相同的参考。 为了避免这个问题,你必须创建一个新的 StringBuilder 对象 b .
StringBuilder a = new StringBuilder("abc");
StringBuilder b = new StringBuilder(a.append("de"));
b = b.append("f").append("g");
System.out.println("a=" + a);
System.out.println("b=" + b);
4条答案
按热度按时间wswtfjt71#
让我把队伍分开
StringBuilder b = a.append("de");
在这里a.append("de")
方法a = a + "de"
.ie a = "de"
那么StringBuilder b = a.append("de") = a;
现在是stringbuilderb
以及a
有相同的参考。为了避免这个问题,你必须创建一个新的
StringBuilder
对象b
.ukqbszuj2#
stringbuilder不是不变的。为了方便起见,它只返回自身的一个示例,这样您就可以链接方法。所以呢
a
以及b
请参阅此处所示的相同示例。印刷品
xt0899hw3#
我想这就是你想要的:
现在输出为:
在你的例子中,“b”也只是对“a”的引用。也就是说“a”和“b”引用的是同一个对象。其中一个的任何变化都会影响到另一个。
lc8prwob4#
在第2行中,当您说“stringbuilder b=a.append(”de“)”时,实际上是将它们链接在一起。所以,他们两个在这一点上是一样的。执行a.append(“de”)时,该行有两个函数。一种是将“de”添加到stringbuilder a中。第二种方法是将stringbuilder b设置为stringbuilder a。所以,因为它们都设置为相同的值,所以结果是相同的。