我正在编写一个应用程序,该应用程序应该非常简单,但是对于所有内容,它始终使用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实例时都为此字段分配专用内存。