I
Q = „f”, „g”, „h”, „i”, „j 'Jeśli pod-podorządek od indeksu 2 do końca tablicy P zostanie skopiowany do tablicy Q, poczynając od indeksu 1, wówczas nowa tablica Q byłaby:
„F”, „c”, „d”, „e”, „j”Elementy „g”, „h” i „i” Array Q zostały zastąpione. Pamiętaj, że długości tablicy nie można ani zwiększyć, ani zmniejszyć po definicji. Tak więc zastąpienie musi odbyć się w ramach takiego kopiowania. Celem tutaj nie jest wstawienie. Celem jest kopiowanie. Tablica nie jest normalną strukturą danych, która umożliwia wstawienie. Z wstawieniem struktur danych wszystkie elementy po prawej stronie są przesunięte w prawo w wielu miejscach. Nie zapominaj, że gdy tablica w Javie nie ma praktycznych wartości, ma wartości domyślne. Innymi słowy, pusta tablica niezerowa ma wartości domyślne.
Klasa systemowa Java.Lang.* Pakiet ma metodę ArrayCopy (). Celem tej metody jest skopiowanie części jednej tablicy do innej tablicy. Część może być całą tablicą!
Składnia
Przed rozważeniem składni metody dobrze jest rozważyć program za pomocą metody arraycopy () dla powyższego przykładu kopiowania tablicy. Program to:
Klasa publiczna THEClassWyjście to fcdej, lepiej napisane jako, f c d e j. Wyjście jest zgodne z oczekiwaniami, choć nie są dobrze sformatowane. Zauważ, że Java.Lang.* Pakiet nie został zaimportowany. Java.Lang.* Pakiet nie musi być importowany przez programistę dla żadnej klasy, takiej jak system, który ma. Składnia to:
public static void arraycopy (obiekt src, int srcpos, obiekt dest, int destpos, int długość)Metoda jest statyczna. Oznacza to, że klasa systemowa nie musi być utworzona, aby użyć metody. Pierwszym argumentem jest tablica, z której należy kopiować elementy. Nazywa się to źródłem, aw powyższym przypadku jest to tablica p. Drugim argumentem jest indeks startowy do kopiowania ze źródła. W powyższym przypadku jest to 2. Trzecim argumentem jest tablica, do której należy skopiować elementy. Nazywa się to miejscem docelowym, aw powyższym przypadku jest to tablica Q. Czwarty argument to indeks początkowy do kopii odbierania przez tablicę docelową. W powyższym przypadku jest to 1. Piątym argumentem jest liczba elementów, które zostaną skopiowane z tablicy źródłowej, co jest tak samo jak liczba elementów, które należy zastąpić w tablicy docelowej. Liczenie tej liczby zaczyna się od indeksu.
Uwaga: długości tablic źródłowych i docelowych nie muszą być takie same.
Niezgodność
Gdy wdrożenie dwóch tablic i instrukcji ArrayCopy () są prawidłowe, program będzie się skompilować, wszystko jest równe. Jeśli istnieje jakakolwiek niezgodność, program nie uruchomi się, a odpowiedni wyjątek zostanie wyrzucony.
Dwa dane nie tego samego typu
W języku angielskim liczba mnoga odniesienia jest danymi. Jeśli jedna z tablic ma zwarty, a druga ma bajty, program nadal będzie się kompiluje, wszystko jest równe. Jednak w czasie wykonywania zostanie wydana ArreboreException, a program nie zostanie wykonany. Komunikat o błędzie wyjątku może być:
Wyjątek w wątku „główna” Java.Lang.ArraterSoreException: ArrayCopy: Typ Mismatch: nie można skopiować char [] do bajtu []Dwa dane nie tego samego rodzaju
Jeśli jedna z tablic ma znaki, a druga ma znaki, program nadal będzie się kompiluje, wszystko jest równe. Jednak w czasie wykonywania zostanie wydana ArreboreException, a program nie zostanie wykonany. Komunikat o błędzie wyjątku może być:
Wyjątek w wątku „główna” Java.Lang.ArraterSoreException: ArrayCopy: Typ Mismatch: nie można skopiować char [] do obiektu []Tablica docelowa za krótka
Gdyby długość (piąty argument) wykracza poza tablicę docelową, w czasie wykonywania zostanie rzucona ArrayIndexoutofboundSexception.G.
Wyjątek w wątku „główna” Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Ostatni indeks docelowy 4 poza granicami dla Char [3]Tablica źródła zbyt krótka
Gdyby długość (piąty argument) wykracza poza tablicę źródłową, w czasie wykonywania zostanie rzucona ArrayIndexoutofboundsexception.G.
Wyjątek w wątku „główna” Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Last Source Indeks 6 poza granicami dla Char [5]Tablica docelowa jest null
Tablica docelowa może być zerowa. Na przykład,
char [] q = null;W takim przypadku system zostanie wyrzucony przez system.metoda arraycopy (); mi.G.
Wyjątek w wątku „główna” Java.Lang.NULLPOINTERExceptionNotatka,
char [] q = ;nie oznacza, że Q jest null. Oznacza to, że Q jest pusty. Dzięki temu jest to ArrayIndexoutofboundsexception, który zostanie rzucony; mi.G.
Wyjątek w wątku „główna” Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Ostatni indeks docelowy 4 poza granicami dla Char [0]Tablica źródła jest null
Tablica źródłowa może być zerowa. Na przykład,
char [] p = null;W takim przypadku system zostanie wyrzucony przez system.metoda arraycopy (); mi.G.
Wyjątek w wątku „główna” Java.Lang.NULLPOINTERExceptionNotatka,
char [] p = ;nie oznacza, że P jest null. Oznacza to, że P jest pusty. Dzięki temu jest to ArrayIndexoutofboundsexception, który zostanie rzucony; mi.G.
Wyjątek w wątku „główna” Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Last Source Index 5 poza granicami dla Char [0]Wniosek
Klasa systemowa Java.Lang.* Pakiet ma metodę ArrayCopy (). Celem tej metody jest skopiowanie części jednej tablicy do innej tablicy. Część może być całą tablicą! Jest to metoda statyczna, więc klasa systemowa nie musi być utworzona, aby zastosować metodę. Metoda zwraca pustkę. Składnia metody to:
public static void arraycopy (obiekt src, int srcpos, obiekt dest, int destpos, int długość)