Использование объединения в структуре, которая содержит предварительно рассчитанные или вычисляемые результаты

Если метод equals() присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим две различные ссылочные переменные, str1 и str2:

str1 = new String("abc");
str2 = new String("abc");

Если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

, вы получите выход как TRUE, если вы используете ==.

System.out.println((str1==str2) ? "TRUE" : "FALSE");

Теперь вы получите вывод FALSE в качестве вывода, потому что оба str1 и str2 указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String() каждый новый объект создается каждый раз.

-3
задан J.Doe 10 March 2019 в 00:57
поделиться

1 ответ

(Я не думаю, что вы предоставили достаточно контекста, чтобы полностью ответить на свой вопрос, но я постараюсь на основе того, что вы мне дали.)

Это правильный путь чтобы выразить эту идею?

Так как вы, кажется, обеспокоены производительностью - вероятно, нет. Вызов функции через указатель на функцию (edit :) часто дорогой. Более того, эта функция даже не получает значение поля t при его вызове ... так что это, вероятно, даже не сработает.

Что делать, затем?

Во-первых, выяснить, если это даже болевая точка w.r.t. спектакль. Не просто оптимизируйте это, потому что есть потенциал для оптимизации.

Предполагая, что это полезно для оптимизации - старайтесь избегать всей этой материализации результатов. Вместо этого определите, какой тип поплавка нуждается в его норме, а затем попытайтесь приложить некоторые усилия, чтобы получить эту норму; это не будет так уж плохо, поскольку вы будете выполнять работу только с одним фрагментом данных, а не со всеми.

PS - В наши дни не нужно использовать союзы, у нас есть std::variant в C ++ 17. Это также спасет вас от логического значения.

0
ответ дан einpoklum 10 March 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: