簡體   English   中英

為什么該對象數組中的每個元素都被最后一個對象覆蓋?

[英]Why does each element in this array of objects get overwritten by the last object?

我有以下代碼:

public static void main(String[] args) {
  Player players[] = new Player[2];
  Scanner kb = new Scanner(System.in);
  System.out.println("Enter Player 1's name");
  players[0] = new Player(kb.nextLine());
  System.out.println("Enter Player 2's name");
  players[1] = new Player(kb.nextLine());
  System.out.println("Welcome "+ players[0].getName() + " and " + players[1].getName());    
}

它旨在創建一個新的播放器對象並存儲播放器的名稱,同時將所有對象保留在數組中。

這是玩家類:

public class Player {
  static String name;
  public Player(String playerName) {
    name = playerName;
  }

  public String getName(){
    return name;
  } 
}

實際發生的情況是,當我只有1個對象時它起作用,但是當我有2個對象時,數組中的每個元素都與第二個相同。 當我在數組中有3個對象時,每個元素與第三個元素相同,依此類推。

我不確定為什么會這樣,或者如何糾正它,這讓我感到困惑了好幾個小時:/

這是由於靜態字段。 靜態對象對象之間使用。 它們存儲在類級別。

下面的代碼可以工作:

class Player
{
    String name;

    public Player(String playerName)
    {
        name = playerName;
    }

    public String getName()
    {
        return name;
    }
}

將靜態字符串名稱更改為私有字符串名稱

名稱字段不能為靜態。 靜態意味着變量實際上是全局的,並且在所有類實例之間共享。

使用關鍵字static ,可以將一個類變量name不是實例變量的類。 類變量是所有對象共有的。 單擊以獲取更多閱讀信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM