Строковые операции с использованием разных операторов - PullRequest
0 голосов
/ 26 сентября 2019

Я использовал это утверждение

System.out.println("Y"+90+90);

Ответ Java показывает: Y9090.Я понимаю, как Java выполняет эту операцию.Строка объединяется с литералами, если используется оператор +.Поэтому Y сначала объединяется с 90, образуя Y90 как новую строку, а затем снова Y90 объединяется с 90, образуя Y9090 в качестве результирующей строки.

Когда я меняю приведенное выше выражение на:

System.out.println("Y"+90-90); 

Java показывает ошибку.В этом случае Y объединяется с 90, образуя Y90 в качестве новой строки.Эта новая строка сталкивается с оператором - и выдает ошибку.

Но если я напишу это:

System.out.println("Y"+90*90);

Он показывает ответ как Y8100.

Как это возможно?Это должно было привести к ошибке, или Java должен был дать аналогичный ответ для второго оператора, такой как Y0, без ошибки.

1 Ответ

1 голос
/ 26 сентября 2019

С обоими плюсами операторы оцениваются слева направо, поэтому "Y" + 90 + 90 равно ("Y" + 90) + 90.

С плюсом и минусом, которые имеют одинаковый приоритет, то же самое верно."Y" + 90 - 90 равно ("Y" + 90) - 90.Вы не можете вычесть число из строки, следовательно, ошибка компиляции.

С плюсом и множителем, умножение имеет более высокий приоритет, поэтому "Y" + 90 * 90 равно "Y" + (90 * 90), что прекрасно компилируется.

Если сомневаетесь, добавьте скобки, чтобы показать свое намерение.

...