Если метод 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()
каждый новый объект создается каждый раз.
Двоичный поиск работает, предполагая, что середина массива содержит медианное значение в массиве. Если это не отсортировано, это предположение не имеет смысла, так как медиана может быть где угодно и разрезание массива пополам может означать, что вы отрезали номер, который вы искали.
Причина, по которой двоичный поиск делает не делать сам сорт, потому что ему не нужно ... массив уже отсортирован.
Обычно считается хорошей практикой программирования для определения функций, которые фокусируются на одной цели. Это приводит к более модульному, многоразовому коду и позволяет избежать повторной обработки кода.
Например, было бы целесообразно реализовать функцию, которая выполняет сортировку для вас, и которую вы можете просто вызвать в разных функциях поиска. Таким образом, вам не нужно повторять код сортировки в каждой функции поиска, которую вы хотите реализовать.
binarySearch
не выполняет сортировку. – Jesper 16 December 2014 в 20:06