[英]Why does every object of this class have the same value for its members?
我正在編寫一個應用程序,該應用程序應該非常簡單,但它始終使用name
和boxesSold
的最后設置值來進行所有操作。 這是一個最小的示例:
public class BandBoosterDriver
{
public static void main (String[] args)
{
BandBooster booster1 = new BandBooster("First");
BandBooster booster2 = new BandBooster("Second");
booster2.updateSales(2);
System.out.println(booster1.toString());
System.out.println(booster2.toString());
}
}
這是問題類別:
public class BandBooster
{
private static String name;
private static int boxesSold;
public BandBooster(String booster)
{
name = booster;
boxesSold = 0;
}
public static String getName()
{
return name;
}
public static void updateSales(int numBoxesSold)
{
boxesSold = boxesSold + numBoxesSold;
}
public String toString()
{
return (name + ":" + " " + boxesSold + " boxes");
}
}
這產生
Second: 2 boxes
Second: 2 boxes
但是我希望
First: 0 boxes
Second: 2 boxes
如何使它按我期望的方式工作?
刪除static關鍵字。 static將指示您的程序對該字段使用單個內存地址,並且避免每次創建BandBooster實例時都為此字段分配專用內存。
因為它沒有任何實例成員,所以只有靜態成員。
靜態創建的變量對於該類是唯一的,並且由其所有實例共享。 您所看到的是應該發生的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.