增强的 for 循环和数组
Enhanced for loop and Array
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 的值没有更改为测试最后两个 for-each 循环。当您使用 append() 方法时,会应用更改,例如单向和双向。
非常感谢。
在java中,class类型是引用类型。这意味着 StringBuilder
类型的变量将保存 对 StringBuilder
对象的引用。
for (StringBuilder val: myArr)
val.append("Way");
这里我们引用了myArr
。然后我们调用方法append
,它改变引用的对象。
for (StringBuilder element : anotherArr)
element = new StringBuilder("Test");
这里我们也从一个数组中获取一个引用。但是,然后我们重新分配一个变量。这只会改变 element
变量所指的内容。实际上没有对象发生变化。
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 的值没有更改为测试最后两个 for-each 循环。当您使用 append() 方法时,会应用更改,例如单向和双向。 非常感谢。
在java中,class类型是引用类型。这意味着 StringBuilder
类型的变量将保存 对 StringBuilder
对象的引用。
for (StringBuilder val: myArr)
val.append("Way");
这里我们引用了myArr
。然后我们调用方法append
,它改变引用的对象。
for (StringBuilder element : anotherArr)
element = new StringBuilder("Test");
这里我们也从一个数组中获取一个引用。但是,然后我们重新分配一个变量。这只会改变 element
变量所指的内容。实际上没有对象发生变化。