s.charAt(0)
- это char
('d'), а char
- это числовой тип.Числовое значение символа 'd'
равно 100
.Поэтому s.charAt(0) * 2
просто умножает это значение на 2
, что приводит к 200
(а не 102
, как вы написали).
Затем результат преобразуется в String
, поскольку вы добавили к нему пустой String
, поэтому s
присваивается "200"
.
Выражение оценивается слева отверно, это эквивалентно:
s = (s.charAt(0) * 2) + "";
- Сначала
char
'd' повышается до int
и умножается на 2
. - ЗатемВ результате
int
(200) добавляется к пустому String
"".в результате String
"200".