TGViewer
Java библиотека Java библиотека @javalib · 30.6K subscribers
Post #7786 1.01K
Почему equals у массивов в Java не сравнивает содержимое?

В Java массив выглядит как контейнер значений, поэтому легко ожидать, что equals сравнит элементы внутри.

Но массивы не переопределяют equals для содержимого. Обычный equals у массива работает почти как сравнение ссылок.

Например, два массива с одинаковыми числами не будут равны через equals:
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};

System.out.println(a.equals(b));


Результат будет false, потому что это два разных объекта в памяти.

Для одномерных массивов нужно использовать Arrays.equals:
System.out.println(Arrays.equals(a, b));


Теперь Java сравнит элементы по порядку и вернёт true.

С массивами объектов логика такая же:
String[] left = {"java", "ready"};
String[] right = {"java", "ready"};

System.out.println(Arrays.equals(left, right));


Но для вложенных массивов Arrays.equals уже недостаточно. Он сравнит внутренние массивы как объекты.

Для двумерных структур нужен deepEquals:
int[][] x = {{1, 2}, {3, 4}};
int[][] y = {{1, 2}, {3, 4}};

System.out.println(Arrays.deepEquals(x, y));


То же самое касается вывода. Обычный toString у массива покажет служебное имя, а не элементы.

Для нормального вывода используют Arrays.toString:
System.out.println(Arrays.toString(a));


Если массив вложенный, нужен deepToString:
System.out.println(Arrays.deepToString(x));


Массивы в Java стоит сравнивать и выводить через Arrays. Иначе код может выглядеть логично, но проверять совсем не то.

Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
  • 👍 5
  • ❤ 1
  • 🔥 1
More from @javalib
  1. Oct 16, 2026Топ-3 товаров через Map.merge Есть названия покупок с повторами. Сначала считаем частоты,…
  2. Oct 16, 2026Какая структура данных в коллекции List? В Java интерфейс List представляет упорядоченную…
  3. Oct 16, 2026Post #7784
  4. Oct 16, 2026Знали, что Map.getOrDefault может вызвать загрузку, даже когда ключ уже есть? Java сначала…
  5. Oct 15, 2026👩‍💻 Подводные камни Retry Policy в Java В статье на реальных примерах показывают retry-ш…
  6. Oct 15, 2026Память в Java растёт? Сначала выясните, что удерживает объекты Рост потребления памяти не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →