почему если писать
System.out.println("какой-то текст"+a+100+ )
то на выходе происходит конкатенация?
хотя и а, и 100 интовые
---
но если занести в скобки (а+100), то оно складывает числа, а не строки?
JD
18 уровень
System.out.println("какой-то текст"+a+100+ ...);
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
НиколайExpert
12 апреля 2019, 11:41
Смотрите порядок действий. Сначала выполняется то, что в скобках (а там два интовых значения) а уже потом к строке прибавляется итоговый инт
0
JD Backend Developer в EPAM
12 апреля 2019, 12:26
но если без текста писать в вывод просто а+100, оно же будет складывать
все равно не понятно
0
hidden #598481
12 апреля 2019, 12:36решение
Потому что у тебя в действии а+100 нет строк, есть два инта, которые он складывает, а потом (перед выводом) преобразует в строку.
Действия выполняются слева направо, если нет скобок. Плюс - это и оператор сложения и оператор конкатенации, в зависимости от того, какие аргументы.
если "строка"+а+100, то сначала выполняется "строка+а", т.е. строка конкатенируется со строковым значением переменной а, затем уже результат конкатенации будет аргументом в следующем действии +100. Опять т.к. слева аргумент строка, то + - это конкатенация, а не сложение.
Сравни:
+2
JD Backend Developer в EPAM
12 апреля 2019, 12:39
спасибо) теперь понятно:3
0
NodeOneExpert
12 апреля 2019, 12:39
а что тут непонятного? По сути могла бы возникать ошибка, но разработчики java предусмотрели такую, весьма не тривиальную, ситуацию и решили, что если к строке пихают int то пусть вернется строка.
0
НиколайExpert
12 апреля 2019, 12:39
строка + число = строка
число + число = число
строка + (число + число) = сначала скобка число + число = число, а потом уже строка + число = строка
(строка + число) + число = сначала скобка строка + число = строка, потом уже строка + число = строка
системаутпринт просто выводит то, что ему дают
Вам бы не мешало почитать справочную литературу
0
hidden #598481
12 апреля 2019, 12:41
NB При этом действия * и / все равно остаются приоритетнее, чем +, даже если + означает конкатенацию.
http://proglang.su/java/operators (внизу страницы)
Смотри таблицу приоритетов всех операций: +1