[英]Java Object Overwriten and not new made
对于我的下一个 Java 项目,我想创建一个 Vector(命名为 Vektor)类,用于自己保存 1,2 或 3 维向量。 Vektor 类在创建时输入的每个参数数量都有三个构造函数。 它还有一个 show() 方法可以将 Vektor 打印为数组。 启动 Vektor 时出现以下问题:启动代码:
public static void main(String[] args) {
Vektor x = new Vektor(1);
Vektor xy = new Vektor(2,3);
Vektor xyz = new Vektor(4,5,6);
x.show();
xy.show();
xyz.show();
输出:
[4,5,6]
[4,5,6]
[4,5,6]
Vektor 类看起来像这样:
public static int[] alpha = new int[3];
public Vektor(int x) {
this.x = x;
alpha[0] = x;
}
public int[] show() {
System.out.println(Arrays.toString(alpha));
return alpha;
当然,构造函数随着参数的数量而变化。 除了在 Vector 中存储所有变量的 Array alpha 之外,还有变量 x,y,z 在出现在构造函数中时会填充它们的值。 我真的希望有人能帮我弄清楚为什么我得到了 3 倍相同的输出而不是三个不同的输出,因为我创建了三个不同的对象。 谢谢,卢卡
更新:发现问题。 数组不应归类为“静态”。 谢谢你们。
根据您提供的代码,似乎每次实例化Vektor
类时, alpha
数组都会更新以保存最近实例化的一些(如果不是全部)最近的构造函数参数。
您需要将 alpha 数组从静态更改为公共(理想情况下使用 getter/setter 私有)以将alpha
数组封装在创建它的每个对象中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.