(Добавить значение к числу на месте) Как работает оператор + в java? - PullRequest
0 голосов
/ 11 июля 2020

Я хочу знать, как работает оператор + в java, представьте себе следующую ситуацию:

Long number1 = 5L;
Long number2 = 10L;
Long number3 = number1 + number2;

Создает ли третий оператор другой Object, содержащий сумму number1 и number2? если это так, не лучше иметь метод вроде number1.addValue(number2) для добавления числа 2 к числу 1 на месте и не создавать новый объект?

1 Ответ

1 голос
/ 11 июля 2020

Создает ли третий оператор еще один объект, содержащий сумму чисел number1 и number2?

Да, это так.

Не лучше было бы иметь метод, например number1.addValue (number2), чтобы добавить number2 к number1 на месте и не создавать новый объект?

Нет, это не так. Это потребует, чтобы классы-оболочки примитивов Java были изменяемыми. Фактически, они неизменяемы.

Подумайте об этом:

Long five = 5L;
Long ten = 10L
Long sum = five;
sum.addValue(ten);    // Hypothetically ....

Вопрос: Какое сейчас значение five?

Ответ: five было бы сейчас имеют значение 15 ... потому что five и sum - это один и тот же объект.

Если бы они спроектировали классы-оболочки Long и т. д. как изменяемые, тогда использование упаковки и распаковки было бы быть намного сложнее для программиста.

Достаточно плохо, что текущая семантика == для классов-оболочек противоречит интуиции. Например:

Long one_million = 1,000,000L;
Long one_million_and_one = one_million + 1L;
Long one_million_again = one_million_and_one - 1L;

System.out.println(one_million.equals(one_million_again));
System.out.println(one_million == one_million_again);

... печатает true и false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...