在不使用static关键字的情况下增加变量

时间:2016-11-29 15:33:56

标签: java static

这里我使用static关键字来实例化变量我使用两个不同的Object调用变量。我想在不使用static关键字的情况下将结果打印为1和2.请提前感谢。

public class Test {
    static int a = 1;

    public void meth() {
        System.out.println(a);
        a = a + 1;
    }

    public static void main(String[] args) {
        Test a = new Test();
        Test b = new Test();
        a.meth(); //prints 1
        b.meth(); //prints 2
    }

}

1 个答案:

答案 0 :(得分:0)

如果您删除static关键字,则需要在int的两个实例中共享Test变量。

例如,使用AtomicInteger作为int的可变包装,并在构建Test时提供对象:

public class Test {
    private final AtomicInteger a;
    // + constructor setting a + getter

    public void increment() {
        a.incrementAndGet();
    }

}

public class Main {
    public static void main(String[] args) {
        AtomicInteger i = new AtomicInteger()
        Test a = new Test(i);
        Test b = new Test(i);

        System.out.println(i.get()); // prints 0
        a.increment();
        System.out.println(i.get()); // prints 1
        b.increment();
        System.out.println(i.get()); // prints 2

    }
}