2011-12-18 5 views
1

Я новичок в Java и работал с простой печатью. Во-первых, я выполнил:Strange java print output

System.out.println(1 + 2 + "3"); 

Выход:33

Я придумал логику, который будет добавлен 1 и 2 и 3 будет распечатана как есть.

Затем я попытался это:

System.out.println ("1" + 2 + 3); 

Выход:123

Применяя эту логику я получил ответ 15, не может работать, правильный ответ, так что мне нужна ваша помощь, ТАК друзья.

ответ

5

Оператор + оценивается с левой, чтобы ваш второй пример интерпретируется следующим образом:

System.out.println (((“1”+2)+3)); 
====================> "12"+3 
====================> "123" 

Если вы хотите отобразить 15, то вы должны сделать следующее:

System.out.println (“1”+(2+3)); 

Таким образомСначала будет оценена оценка.

2
  1. Выражение 1 + 2 является int.
    Затем вы соединяете "3" с тем int.

  2. Выражение "1" + 2 является String.
    Затем вы связываете 3 с этим String.

Вы думаете о "1" + (2 + 3), что не происходит, потому что Java является левоассоциативной.

1

В первом случае Java добавляет числа, чтобы получить результат 3, а добавление строки 3 приводит к тому, что она становится конкатенированной строкой: «33».

Во втором случае результатом является строка из «1», а другие получают сцепляются стать «123»