【发布时间】:2015-02-23 05:39:43
【问题描述】:
所以我正在尝试为课堂做作业,但遇到了一个奇怪的问题。每当我在我的类 Queue 的一个实例中修改变量 size 时,它也会修改该类的另一个实例的 size 变量。例如
Queue takeoffQueue=new Queue();
Queue landingQueue=new Queue();
System.out.println("TakeoffSize "+takeoffQueue.size);
System.out.println("LandingSize "+landingQueue.size);
takeoffQueue.size++;
System.out.println("TakeoffSize "+takeoffQueue.size);
System.out.println("LandingSize "+landingQueue.size);
将打印出来:
起飞尺寸 0
着陆尺寸 0
起飞尺寸 1
着陆尺寸1
有人知道这是为什么吗?
【问题讨论】:
-
你的队列类在哪里?
-
如果
size变量是static,就会发生这种情况 -
不要在队列中使用静态变量
-
将
size设为实例变量 -
实例之间共享一个静态变量。更具体地说,它与实例无关。你不想让它成为静态的。听起来你绝对想要的是让
size和实例变量,就像人们一直在说的那样。