Создание экземпляра класса эквивалентен созданию переменной?
Почему я не могу просто написать "man superman;" ?
Потому что есть примерно миллион случаев когда необходимо объявить переменную, но не создавать экземпляр.
Смотрите:
У Вас есть две фигурки супер мена.
man superman1 = new man();
man superman2 = new man();
Переменная superman1 ссылается на первую фигурку, superman2 - на вторую фигурку.
man superman3 = superman1;
Теперь, у нас есть третья переменная, которая ссылается на первую фигурку.
Итого: 3 переменных, 2 объекта.
Почему же мы пишем int x = 0; а не int x = new int(0); 
Потому что int - это целочисленная цифра и ей нельзя передать какие либо свойства/аргументы. Единица, это единица, два это два.
man superman1 = new man(быстро бегать, неуязвимый);
man superman2 = new man(далеко прыгать, бессмертный);
int x = new int(0); все, у типа int закончились супер способности, только число и все.
String str = new String("String"); всего лишь строка, больше ничего нет.