【发布时间】:2014-07-20 20:11:00
【问题描述】:
在下面的示例中,我试图生成一个运行作为 class::Product 的简单 ID。然而,结果却出乎我的意料。
我的代码
public class myProgram
{
public static void main(String[] args)
{
Product product1 = new Product("AAA");
Product product2 = new Product("BBB");
Product product3 = new Product("CCC");
System.out.println(product1.printItem());
System.out.println(product2.printItem());
System.out.println(product3.printItem());
}
}
class Product
{
static int productID = 0;
String name;
public Product(String startName)
{
productID ++;
name = startName;
}
public int printItem()
{
return productID;
}
}
计划成果
3
3
3
我期望它得到的结果是:
1
2
3
我的问题:我做错了什么导致错误的程序输出?
编辑 1: 我放置了一个静态关键字,希望它在每次创建实例后增加 ProductID(而不是每次都重置回 0)。如果没有,如何生成流水号?
【问题讨论】:
-
因为产品 id 是静态变量?
-
@KickButtowski 我故意将其设为静态,希望它在创建每个对象实例后添加 1。如果不是,它会一直保持为 0?
-
因为它是一种通用变量类型。每个人都可以更新它。如果你想要你的预期结果,你根本不应该使用静态变量