gpt4 book ai didi

java - 所有声明为类变量的数组都应该是静态的吗?

转载 作者:行者123 更新时间:2023-12-02 09:13:50 25 4
gpt4 key购买 nike

我正在尝试编写一个代码来递增一个声明为类变量的整数数组,分别使用该类的 2 个不同对象。

class Foo {
int n[];

Foo(int n1[], int x, int y) {
n = new int[]{0, 0, 0, 0};
n1[0] = n1[0] + x;
n1[1] = n1[1] + y;
this.n = n1;
}
}

public class stats {
public static void print(Foo obj) {
for (int i = 0; i < obj.n.length; i++) {
System.out.println(obj.n[i]);
}
}

public static void main(String[] args) {
int n[] = {1, 1, 1, 1};
Foo a = new Foo(n, 1, 1);

Foo b = new Foo(n, 2, 2);
print(a);
print(b);

}
}

预期输出:

2
2
1
1
3
3
1
1

实际输出

4
4
1
1
4
4
1
1

尽管没有将变量声明为静态,但它是否有理由将对象之间的数组作为静态变量递增?就像每个整数数组都声明为静态类变量一样吗?我将如何获得预期的输出?

最佳答案

重要的部分是this.n = n1;
这意味着这两个对象都引用了您在 main 方法中创建的同一个数组 n

关于java - 所有声明为类变量的数组都应该是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59172726/

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