gpt4 book ai didi

Java "pass-by-value"循环

转载 作者:行者123 更新时间:2023-12-01 17:05:30 24 4
gpt4 key购买 nike

我认为这个问题与这个问题相关:Is Java "pass-by-reference" or "pass-by-value"? ,但并不完全相同。

假设我有这个循环代码:

ArrayList<foo> list = new ArrayList<foo>();
Calendar cal = Calendar.getInstance();
for(int i = 0; i < 10; ++i) {
cal.set(Calendar.HOUR, i);
list.add(new foo(cal));
}
for(int i = 0; i < 10; ++i) {
System.out.print(list.get(i).calToString());
}

foo.class:

public class foo {
private Calendar mCal;
public foo(Calendar cal) {
mCal = cal;
}
public String calToString() {
return String.valueOf(mCal.get(Calendar.HOUR));
}
}

结果列表的所有项目 Calendar.HOUR 设置为 9。它打印 9999999999。我怎样才能让每个项目分别有0-9?在循环内实例化变量 cal 是否会产生性能问题(如果 foo 是一个更复杂的类)?

最佳答案

实际上,您正在覆盖您的对象,您在循环之外声明了它,并且不断更改它的值。

您应该在循环内创建实例。不会,您不会注意到任何性能问题。

关于Java "pass-by-value"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com