与java对象混淆

时间:2016-08-15 14:03:11

标签: java object

我是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

2 个答案:

答案 0 :(得分:4)

AABBstatic,这意味着它们属于,而非每个实例。实质上,这两个变量在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();
    }

}