Странный вывод на печать java - PullRequest
1 голос
/ 19 декабря 2011

Я новичок в Java и работал с простой печатью. Сначала я выполнил:

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

Выход: 33

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

Затем я попробовал это:

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

Выход: 123

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

Ответы [ 3 ]

5 голосов
/ 19 декабря 2011

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

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

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

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

Таким образом (2+3) будет оцениваться первым.

2 голосов
/ 19 декабря 2011
  1. Выражение 1 + 2 представляет собой int.
    Затем вы объединяете "3" с этим int.

  2. Выражение "1" + 2 представляет собой String.
    Затем вы соединяете 3 с этим String.

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

1 голос
/ 19 декабря 2011

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

Во втором случае результатом является строка из-за «1», а остальные объединяются в «123»

...