Во-первых, он позволяет вам цепочки ваших назначений, как в вашем примере:
a = b = c = 16;
. Для другого он позволяет назначать и проверять результат в одном выражении:
while ((s = foo.getSomeString()) != null) { /* ... */ }
Оба варианта, вероятно, сомнительны, но есть определенные люди, которым нравятся эти конструкции.