我是java的初学者,我目前正在使用Netbeans IDE,我在这里有些困惑。 我写下了以下代码:
public class Try {
public static int AA;
public static int BB;
Try(int a, int b)
{
AA=a;
BB=b;
}
int calculate()
{
int c;
c=Try.AA + Try.BB;
System.out.println(c);
return 0;
}
public static void main(String[] args) {
Try a = new Try(1,2);
Try b = new Try(2,3);
a.calculate();
b.calculate();
// TODO code application logic here
}
}
好吧,只是一个添加两个整数的简单程序,这里是输出:
5
5
我原以为
3
5
那么,我哪里出错了? Here is the screenshot
答案 0 :(得分:4)
AA
和BB
为static
,这意味着它们属于类,而非每个实例。实质上,这两个变量在Try
的所有实例之间共享。实例化第二个Try
对象时,原始的两个值被覆盖。
使两个变量非静态将导致您期望的计算。
答案 1 :(得分:1)
AA和BB属性在所有对象之间共享(并且它们被重写)。
package pkgtry;
/**
*
* @author HeiLee
*
*/
public class Try {
/* there is the mistake,
public static int AA;
public static int BB;
This attributes are shared between all objects.
*/
public int AA;
public int BB;
Try(int a, int b)
{
AA=a;
BB=b;
}
int calculate()
{
int c;
c=AA + BB;
System.out.println(c);
return 0;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Try a = new Try(1,2);
Try b = new Try(2,3);
a.calculate();
b.calculate();
}
}