I am confused why the following pattern's call to the other constructor block does not count as the first statement in the constructor block: public class MyClass { final String someProperty; public MyClass() { /* some default logic */ } public MyClass(String someProperty) { this().someProperty = someProperty; } } It seems to me like the order of operations should be: 1. The empty constructor runs. 2. The property gets assigned. However, I get a compile error: > Call to another constructor must be the first statement in constructor block **Edits** I realize that I can just separate the calls. public MyClass(String someProperty) { this(); this.someProperty = someProperty; } However, I am trying to understand why `this()` behaves differently than `new MyClass()`. They both run the empty constructor! But they allow for different behavior after the constructor completes. Note that I can chain directly off the constructor when using the fluent pattern. new MyClass().doSomeStuff().doOtherStuff();