This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
It depends. The constructor can be used as a convenient way to set variables, or not prevent other classes from setting the value again via a setter. A problem arises when you have too many instance variables. Using a constructor to instantiate them all would look ugly and difficult to use. Also, using a constructor with parameters forces other classes to pass values when instantiating the class. This can be inconvenient, unless you have different kind of constructors, like a default constructor.