繁体   English   中英

Java 对象被覆盖而不是新的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM