这里我使用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
}
}
答案 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
}
}