Реализация по умолчанию для Object.hashCode () действительно должна возвращать значение указателя объекта, хотя это зависит от реализации. Например, 64-битная JVM может взять указатель и XOR, а также старшие и младшие слова вместе. Подклассам рекомендуется переопределять это поведение, если оно имеет смысл.
Однако не имеет смысла проводить сравнения на равенство для изменяемых массивов. Если элемент изменяется, то эти два больше не равны. Чтобы сохранить инвариант о том, что один и тот же массив всегда будет возвращать один и тот же хэш-код, независимо от того, что происходит с его элементами, массивы не переопределяют поведение хэш-кода по умолчанию.
Обратите внимание, что java.util.Arrays предоставляет реализацию deepHashCode () для случаев, когда важно хеширование на основе содержимого массива, а не идентичности самого массива.