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: 
`n` is a static variable, as a result its scope is the class, not the instance.

`m`, on the other hand, is an instance variable and only has an existence within an instance.

As a result, each time you initialize a `new C3()`, `m` is set to 1 (since it is a new `m`), but `n` gets incremented each time (since all instances share it).
For c1 and c2, only one n is available since n is static.But both will b ehaving separate m's since m is not static.

C3 c1 = new C3(); 
now m=1 and n=1 (m belongs to c1 and n belongs to class)
C3 c2 = new C3(); 
now m=1 and n=2 (m belongs to c1 and n belongs to class)