I am sure other answers would come but in short -
Empty constructor just gives you an instance of that object. You might use setters on it to set necessary properties. If you want to make sure that any instance created is always valid and any member variables are always initialized,then you would define the constructor which initializes all the required member variables.
Also if you use frameworks like Spring, default constructor is often used where properties are set using setter injection.