Arrays.equals i toString
Porównywanie i wyświetlanie tablic
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.toStringzapewnia czytelny wynik;deepToStringobsługuje zagnieżdżenia.deepEqualsporównuje tablice zagnieżdżone.
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
- Arrays.sort i sortowanie
- Arrays.binarySearch
- Arrays.fill i copyOf
- Arrays.equals i toString