Trần Minh Thư Ответов: 2

Почему два результата разные


почему два результата разные?
<pre>system.out.printtln ( 2 + 3 + " bc" )

system.out.printtln (  " bc" + 2 + 3)

результат
5бк
bc23

Что я уже пробовал:

почему два результата разные?
<pre>system.out.printtln ( 2 + 3 + " bc" )

system.out.printtln (  " bc" + 2 + 3)

результат
5бк
bc23

CPallini

Я полагаю, что это называется оценкой слева направо...

2 Ответов

Рейтинг:
7

Richard MacCutchan

Проверьте ссылку Java на результаты добавления чисел к строкам и строк к числам.


Рейтинг:
0

Kornfeld Eliyahu Peter

Удивительно, что вы не спросили, как это возможно, что вы можете добавлять числа и строки и не получать никаких ошибок...
Хотя совершенно верно, что арифметическое сложение не имеет порядка, я не могу понять, на каком основании вы ожидаете, что ваша арифметика сложения будет такой...
Java выбрала способ сделать свою работу-хорошо или плохо - и привести две стороны сложения к наименьшему общему знаменателю (означает приведение к типу, которым могут быть оба)...
Поскольку сложение-это последовательность (вы всегда добавляете два значения), приведение будет сделано только тогда, когда оно должно быть сделано...
Итак, первая версия такова ((2+3)+"bc"), и первая часть-это фактическое арифметическое сложение, которое приводит к 5, и только второе сложение заставляет Java выполнять динамическое приведение.
Во второй версии дополнение на самом деле (("bc" + 2) + 3), и здесь самое первое дополнение заставляет java бросать, а оттуда все дополнения делают то же самое...


CPallini

5.

Kornfeld Eliyahu Peter

Спасибо...