В чём разница между выражениями `a = a + b` и `a += b` в Java, и как поведение этих выражений меняется при работе с целочисленными типами вроде byte, short или int? Плюс, что происходит с блоком finally в конструкции try-catch-finally, если внутри блока try или catch стоит return или вызов System.exit()? — ДейлиПреп