System.out.println((emptyString + 2 + 2 + "22").length()); - Это верное решение.
System.out.println((emptyString + 2 + 2 + "22".length())); - Почему я не могу так написать? (Я знаю, что он сделает слияние, но все же почему он делает слияние?)
mectomeceba
4 уровень
Почему надо length() выносить за скобки?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
chiffka Backend Developer в Freelance Expert
2 мая 2021, 18:40решение
Если мы считаем, что emptyString и правда пустая строка, то тогда это обрабатывается так:
1. "" --> "2" (т.к. "" + 2 — это конкатенация, а 2 при этом преобразуется в строку) --> "22" (т.к. на предыдущем шаге получили строку "2" и к ней теперь прибавляем цифру 2) --> "2222" (после прибавления к нашей "22" ещё одной такой же). И у всего этого берется длина, т.е. "2222".length(). И это 4.
2. Начало точно такое же. Но как только мы доходим до "22".length(), начинаются различия. Т.к. "22".length() — это 2, то к полученной (см. п.1) строке "22" добавляется эта 2, итого имеем "222".
+3
mectomeceba
3 мая 2021, 09:04
Спасибо за второй вариант, оказывается он подсчитал "22" как за 2 символа и слиял с левой строкой.
0
Михаил
2 мая 2021, 18:11
У всех действий есть вес. Сначала делается в скобочках.
(emptyString + 2 + 2 + "22").length() тут сначала высчитывается внутри а потом находится его длина.
emptyString + 2 + 2 + "22".length() тут делается конкатенация но в конце длина строки "22"
+1