You create two instances of T, since i is static member, it belongs to the class, not to any specific instance. Hence, every instance increments the same varibale i, that's to say, that one that belongs to T, every time the constructor of T is invoked.

The case of j is different. It is an instance member, and every instance of T will get a brand new initialized value for j. To this one you assign the number 1 in every case when the constructor of T is invoked. [ May 27, 2006: Message edited by: Edwin Dalorzo ]