When you don't need some logic or error handling:
When you need some logic or error handling:
This works well when the initialization value is available and the initialization can be put on one line. However, this form of initialization has limitations because of its simplicity. If initialization requires some logic (for example, error handling or a for loop to fill a complex array), simple assignment is inadequate. Instance variables can be initialized in constructors, where error handling or other logic can be used.
From https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html .