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