I didn't understand the following program
out put of the following program is
A0
A1
A1B0
A0B1
A0B2
In the above bold content i didn't understand, how A0 is coming. I am expecting null instead of A0. But here i am getting some other value. How its coming? please explain
class A
{
private static int counter;
public static int getCounter(){return counter++;}
private static int innerCounter;
public static int getInnerCounter(){return innerCounter++;}
private String name;
A()
{
name = "A" + getCounter();
System.out.println(name);
}
class B
{
private String name;
B()
{
name = "B" + getInnerCounter();
System.out.println(A.this.name + name);
}
}
void m1() {new A().new B();} // 1
void m2() {new A.B();}// 2
void m3() {new B();} // 3
public static void main(String[] args)
{
A a1 = new A();
a1.m1(); a1.m2(); a1.m3();
}
}

