Java Academy · Lekcja

Arrays.equals i toString

Porównywanie i wyświetlanie tablic

Lekcja 4 z 413 kroki

Arrays.equals i toString to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

Porównywanie i wyświetlanie

Tablice nie przesłaniają metod equals ani toString w użyteczny sposób. Klasa narzędziowa Arrays udostępnia metody equals i toString, które rzeczywiście sprawdzają zawartość elementów.

Dlaczego == nie działa

Użycie == dla tablic porównuje referencje, a nie zawartość. Dwie różne tablice zawierające identyczne elementy nie są równe za pomocą ==.

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(a == b);
    }
}

Arrays.equals

Arrays.equals(a, b) zwraca true, gdy obie tablice mają taką samą długość i równe elementy na tych samych pozycjach.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.equals(a, b));
    }
}

Kolejność ma znaczenie

Kolejność elementów ma znaczenie. Dwie tablice zawierające te same wartości w innej kolejności nie są równe.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {3, 2, 1};
        System.out.println(Arrays.equals(a, b));
    }
}

Porównywanie tablic obiektów

W przypadku tablic obiektów Arrays.equals porównuje elementy za pomocą ich własnej metody equals.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = {"x", "y", "z"};
        String[] b = {"x", "y", "z"};
        System.out.println(Arrays.equals(a, b));
    }
}

toString dla czytelnego wyniku

Bezpośrednie wyświetlenie tablicy pokazuje coś w rodzaju [I@1b6d3586, czyli nazwę klasy i hash. Arrays.toString tworzy czytelną postać [1, 2, 3].

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        System.out.println(nums);
        System.out.println(Arrays.toString(nums));
    }
}

Tablice zagnieżdżone: deepEquals

W przypadku tablic tablic zwykłe equals sprawdza jedynie zewnętrzne referencje poszczególnych wierszy. Do porównania zagnieżdżonej zawartości należy użyć Arrays.deepEquals.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] b = {{1, 2}, {3, 4}};
        System.out.println(Arrays.equals(a, b));
        System.out.println(Arrays.deepEquals(a, b));
    }
}

Tablice zagnieżdżone: deepToString

Podobnie Arrays.deepToString czytelnie wyświetla tablice zagnieżdżone, podczas gdy zwykłe toString pokazałoby referencje wewnętrznych tablic.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] grid = {{1, 2}, {3, 4}};
        System.out.println(Arrays.toString(grid));
        System.out.println(Arrays.deepToString(grid));
    }
}

hashCode dla tablic

Jeśli potrzebny jest hash oparty na zawartości, należy użyć Arrays.hashCode (a dla tablic zagnieżdżonych Arrays.deepHashCode). Wyniki tych metod są zgodne z Arrays.equals.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.hashCode(a) == Arrays.hashCode(b));
    }
}

Porównywanie po sortowaniu

Aby sprawdzić, czy dwie tablice zawierają ten sam multizbiór wartości niezależnie od kolejności, należy posortować kopie obu tablic, a następnie porównać je za pomocą Arrays.equals.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {3, 1, 2};
        int[] b = {2, 3, 1};
        int[] ca = Arrays.copyOf(a, a.length);
        int[] cb = Arrays.copyOf(b, b.length);
        Arrays.sort(ca);
        Arrays.sort(cb);
        System.out.println(Arrays.equals(ca, cb));
    }
}

Łatwe logowanie

Podczas debugowania należy opakować tablice w Arrays.toString wewnątrz instrukcji wyświetlających, aby rzeczywiście odczytać wartości zamiast tajemniczych referencji.

Szybkie sprawdzenie

Proszę sprawdzić swoje rozumienie porównywania tablic.

Podsumowanie

Nauczyli się Państwo porównywać i wyświetlać tablice.

  • == porównuje referencje; do porównywania zawartości należy użyć Arrays.equals.
  • Znaczenie mają zarówno kolejność, jak i długość.
  • Arrays.toString zapewnia czytelny wynik; deepToString obsługuje zagnieżdżenia.
  • deepEquals porównuje tablice zagnieżdżone.
Bezpłatny start

Ucz się Java dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
104
Lekcje
374

Często zadawane pytania

Czy lekcja „Arrays.equals i toString” jest bezpłatna?

Tak — pełny tekst „Arrays.equals i toString” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Arrays.equals i toString”?

Porównywanie i wyświetlanie tablic Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Arrays.equals i toString”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Arrays.sort i sortowanie
  2. Arrays.binarySearch
  3. Arrays.fill i copyOf
  4. Arrays.equals i toString
← Powrót do Java Academy