public static void main(String[] args) {
    	Cat cat1 = new Cat();
        Cat cat2 = new Cat();
        Cat cat3 = new Cat();
        Cat cat4 = new Cat();
        Cat cat5 = new Cat();
        Cat cat6 = new Cat();
        Cat cat7 = new Cat();
        Cat cat8 = new Cat();
        Cat cat9 = new Cat();
        Cat cat10 = new Cat();
        System.out.println (Cat.catCount);
        }
    	public static class Cat {
        public static int catCount = 0;
        public Cat() {
        	Cat.catCount = catCount+1;
        }
    }
}
Результат :
10
В сравнении с этим :
public static void main(String[] args) {
    	Cat cat1 = new Cat();
    	System.out.println (Cat.catCount);
        Cat cat2 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat3 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat4 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat5 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat6 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat7 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat8 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat9 = new Cat();
        System.out.println (Cat.catCount);
        Cat cat10 = new Cat();
        System.out.println (Cat.catCount);
        }
    	public static class Cat {
        public static int catCount = 0;
        public Cat() {
        	Cat.catCount = catCount+1;
        }
    }
}
Результат :
1
2
3
4
5
6
7
8
9
10
Просто хочу понять, как работают конструкторы без параметров, то есть если их нет, то объект берет все что есть в конструкторе, без разбора? А у cat6 будет значение, 6, или переменная идет отдельно от объектов? Или она хранит каждое значение в каждом объекте, что то вроде счетчика?