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