И в целом мне не понятно, почему нельзя в типе String сложить, например, x и y тк это int, но при добавлении пустой строки """" они складываются. А после при добавлении z 6 и 0 склеиваются, а не складываются.
Iscile
21 уровень
Зачем нужна пустая строка?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
25 апреля 2021, 23:55
Такая особенность языка, оно просто должно восприниматься как правило.
Если есть инт + инт, то результат этой операции будет инт, а сама операция это сложение
Если есть строка + инт, или инт + строка, то результат этой операции будет строка, а сама операция это склеивание строки и значения инта.
Примеры:
вывод:
Но есть чуть сложнее примеры, это очередность операций, которые выполняются последовательно:
Что мы здесь видим, в первом случае
1 + 2 + 3 + " string"
порядок операций:
1 + 2 - инт + инт, сложение, (результат 3)
3 + 3 - инт + инт, сложение (результат предыдущего сложения добавляется к тройке - результат 6)
6 + " string" - инт + строка, склеивание строк, 6 уходит в строку и превращается в "6" и склеивается с " string" результат
6 string
Во втором примере поскольку начинается со строки:
"string " + 1 + 2 +3
порядок операций:
"string " + 1 - строка + инт, склеивание строк, результат "string 1"
"string 1" + 2 - строка + инт, склеивание строк, результат "string 1 2"
"string 1 2" + 3 - cтрока + инт, склеивание строк, результат "string 1 2 3"
+9
Iscile Работает в хочу в гугл
26 апреля 2021, 14:06
спасибо!
0
Flexo Bending Unit #3370318
25 апреля 2021, 23:47полезный
Результатом сложения двух чисел типа T является третье число типа T
Вы не можете в переменную типа String вот так просто записать значение другого типа без применения дополнительных методов - это запрещено синтаксисом языка Java.
Зато есть операция конкатенации +, которая автоматически преобразует значение типа T в строку и присоединяет его к другой строке, стоящей с другой стороны оператора (при конкатенации эта другая строка должна обязательно там стоять, иначе компилятор не поймёт, что вы именно конкатенируете строки).
Когда вы прибавляете к выражению пустую строку, всё выражение воспринимается компилятором как конкатенация, и фокус преобразования чисел в строку уже проходит. При этом остаётся важным порядок операций: если сначала идут два числа, а потом пустая строка, то числа складываются, а потом происходит конкатенация; если пустая строка идёт вначале, то происходит конкатенация пустой строки с первым числом, которое сразу преобразуется в строку, и после - вторая конкатенация. Если строка стоит первой, но вы всё-таки хотите увидеть результат сложения, то возьмите операцию сложения в скобки.
+5
Iscile Работает в хочу в гугл
26 апреля 2021, 14:06
спасибо!
0