Что происходит, когда вы используете арифметические операторы внутри строкового объявления? - PullRequest
0 голосов
/ 03 января 2019

Если внутри объявления строки есть арифметический оператор, как String обрабатывает оператор?
Например, в этом случае:

String s = "de32";
s = s.charAt(0) * 2 + "";   
System.out.println(s);

Строка s не dd, а вместо 102. Что означает * 2 для строки?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

В 0 позиции char d есть, и он умножается на 2. Таким образом, значение A в ASCII умножается на 2. Так как значение A в ASCII равно 100, поэтому он дает результат 200. Затем он добавляется к пустой строке и дает " 200 "как строка.

0 голосов
/ 03 января 2019

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".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...