繁体   English   中英

为什么此类的每个对象对其成员都具有相同的值?

[英]Why does every object of this class have the same value for its members?

我正在编写一个应用程序,该应用程序应该非常简单,但它始终使用nameboxesSold的最后设置值来进行所有操作。 这是一个最小的示例:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM