针对循环和阵列进行了增强


public class modifyALelements {

public static void main(String[] args) {

StringBuilder myArr [] = {new StringBuilder("One"), new StringBuilder("Two")};              

for (StringBuilder val: myArr)
System.out.println(val);

for (StringBuilder val: myArr)
val.append("Way");                                              

for (StringBuilder val: myArr)
System.out.println(val);
StringBuilder anotherArr[] = { new StringBuilder("Java"), new StringBuilder("Loop") }; 
for (StringBuilder element : anotherArr)
System.out.println(element);
for (StringBuilder element : anotherArr)
element = new StringBuilder("Test");
for (StringBuilder element : anotherArr)
System.out.println(element);

}
}

输出:

One
Two
OneWay
TwoWay
Java
Loop
Java
Loop

大家好,有人能解释一下为什么每个循环的anotherArr的值没有改为Test last两个吗。当您使用append((方法时,会应用更改,例如OneWay和TwoWay。非常感谢。

在java中,类类型是引用类型。这意味着StringBuilder类型的变量将包含对StringBuilder对象的引用

for (StringBuilder val: myArr)
val.append("Way");

这里我们参考myArr。然后我们调用方法append,它将更改引用的对象。

for (StringBuilder element : anotherArr)
element = new StringBuilder("Test");

这里我们还从一个数组中获取一个引用。然而,然后我们重新分配一个变量。这只会更改element变量所指的内容。实际上不会更改任何对象。

相关内容

  • 没有找到相关文章

最新更新