Question: ```
class C3 {
    public static int n = 0;
    public int m = 0;

    public C3() {
        n++; 
        m++; 
    }

    public void display() {
        System.out.println(n + " " + m);}
    }
}

```

Execution of: - 

```
C3 c1 = new C3(); 
c1.display(); 
C3 c2 = new C3(); 
c1.display(); 
c2.display();   

```

Prints numbers (output) 

```
1 1 
2 1 
2 1

```

Can anyone please explain me the output step by step? i am a bit confused about the 2nd line of output, why didn't both m and n value increase? also in 3rd output why didn't it start from beginning?

Answer: 
`m` isn't static. That means that you have a different variable for each instance.

When you execute `new C3();`, 

* you create a new instance of the class `C3`,
* you increment the static variable `n` (shared by all instances)
* you create a new variable `m`, initialized to `0`,
* and you increment `m` but only for your new instance.
Every object you instantiate will have `m = 1` because m is an instance variable.
`n`, on the other hand, is a class variable. Every object you instantiate will increase the n by 1.

In your case, `n` will count how many objects you have created.