我有这个代码,但我根本不理解它,我不明白为什么它的一个vaues返回到最初初始化的值,另一个继续它离开的地方;
代码:
public class Out{
private int value = 1;
public In initBrenda(String emri) {
return new Brenda(emri);
}
protected class In{
private int value = 10;
private String name;
public Brenda(String name) {
this.name= name;
}
public void printIn() {
System.out.println(name+ ": value= " + value++);
}
public void printOut() {
System.out.println(name+ ": out value = " + Out.this.value++);
}
}
}
测试类:
public class OutTest{
public static void main(String[] arg) {
Out j = new Out();
Out.In b = j.initBrenda("111");
b.printIn();
b.printIn();
b.printOut();
b.printOut();
System.out.println("=======");
Out.In b1 = j.new In("222");
b1.printIn();
b1.printIn();
b1.printOut();
b1.printOut();
}
}
111: value= 10
111: value = 11
111: value out= 1
111: value out = 2
=======
222: value = 10
222: value = 11
222: value out = 3
222: value out = 4
我的问题是为什么out不重置为1,并重新开始计数!! 谢谢!!
答案 0 :(得分:0)
我的问题是为什么out不会重置为1,并重新开始计数!
为什么要这样?您在此处引用value
的{{1}}字段,其代码中包含一个Out
个实例。
当您创建j
(In
)的新实例时,您只为j.new In("222");
的同一实例In
创建j
的新实例。此处未创建Out
的新实例。
因此Out
未重置,因为没有重置它。