Разница связана с порядком операций. Следующее:
str += ((char)97) +2;
эквивалентно:
str = str + (((char)97) + 2);
С другой стороны, следующие:
str = str +((char)97)+2;
эквивалентно:
str = (str + ((char)97)) + 2;
Обратите внимание на разницу при размещении скобок.
Теперь давайте рассмотрим два случая:
1) str = str + (((char)97) + 2)
:
Здесь 97 + 2
оценивается первым. Результатом является int
(99
), который преобразуется в строку и добавляется к str
. Результат: "Hello99"
.
2) str = (str + ((char)97)) + 2
:
Здесь (char)97
('a'
) добавляется к строке, а затем 2
преобразуется в строку и добавляется к результату. Это дает "Helloa2"
.