Artikel ini membawa anda pengetahuan yang berkaitan tentang java Ia terutamanya memperkenalkan analisis terperinci pemahaman salinan tatasusunan melalui kod asal yang mendasari, termasuk penyalinan gelung tatasusunan, kaedah Arrays.copyOf, kaedah Arrays.copyofRange dan. seterusnya, mari kita lihat, semoga bermanfaat untuk semua.
Pembelajaran yang disyorkan: "tutorial video java"
Gunakan gelung untuk salin tatasusunan Menyalin adalah sangat mudah, hanya gunakan gelung untuk menetapkan elemen tatasusunan untuk disalin ke tatasusunan baharu satu demi satu. Pelaksanaan kod khusus adalah seperti berikut:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = new int[arr.length]; for (int i = 0; i < arr.length; i++) { copy[i] = arr[i]; } }
Ini adalah kaedah yang biasanya kami fikirkan Berikut adalah beberapa kaedah yang lebih mudah yang disediakan oleh JAVA untuk kami.
Oleh kerana saya menyalin tatasusunan integer, saya menggunakan kaedah Arrays.copyOf untuk menyalin tatasusunan integer. Tatasusunan jenis lain juga boleh disalin, bukan sahaja tatasusunan integer.
Mari kita terangkan kaedah Arrays.copyOf dengan menyalin tatasusunan integer Mari kita lihat kod asal asas kaedah Arrays.copyOf:
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
Kita boleh melihat Array. copyOf Nilai pulangan kaedah ialah tatasusunan integer, dan parameter formal mempunyai dua parameter, satu tatasusunan integer, dan satu lagi pembolehubah integer.
Tatasusunan integer dalam parameter formal ialah nama tatasusunan yang ingin kita salin
Pembolehubah integer dalam parameter formal ialah panjang tatasusunan yang ingin kita salin
Oleh kerana terdapat nilai pulangan, jadi apabila kita menggunakan kaedah Arrays.copyOf, kita memerlukan array untuk menerima nilai pulangan. Kod tersebut dilaksanakan seperti berikut:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy =Arrays.copyOf(arr,arr.length); }
Nota: Panjang salinan boleh melebihi panjang tatasusunan yang hendak disalin Jika ia melebihi panjang tatasusunan yang hendak disalin, nilainya elemen tambahan akan menjadi 0; sebagai contoh: Saya Saya ingin menyalin tatasusunan arr, tetapi saiz tatasusunan arr ialah 5. Jika saya menukar arr.length*2 semasa menyalin, maka saiz tatasusunan yang disalin akan menjadi 10, dan nilai 6~10 elemen akan menjadi 0. Ini juga Ia adalah pengembangan.
Jika kita ingin menyalin sebahagian daripada tatasusunan, kita boleh menggunakan kaedah Arrays.copyRange. Sama seperti di atas, kami juga menggunakan menyalin tatasusunan integer untuk menjelaskan Mari kita lihat kod asalnya yang mendasarinya:
public static int[] copyOfRange(int[] original, int from, int to) { int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); int[] copy = new int[newLength]; System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength)); return copy; }
Kita boleh lihat daripada kod asal Arrays.copyRange bahawa nilai pulangan. ialah tatasusunan integer , dan parameter formal ialah tatasusunan integer dan dua pembolehubah integer.
Tatasusunan integer dalam parameter formal ialah nama tatasusunan untuk disalin
Dua pembolehubah integer dari dan ke dalam parameter formal ialah julat elemen tatasusunan yang anda inginkan. untuk menyalin. Perhatikan ini Julatnya ialah [bentuk, kepada), yang ditutup di sebelah kiri dan terbuka di sebelah kanan, tidak termasuk elemen pada kedudukan kepada. Kod tersebut dilaksanakan seperti berikut:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = Arrays.copyOfRange(arr,1,3); }
Nota: Subskrip tatasusunan bermula dari 0, dan elemen 1 hingga 3 merujuk kepada 2, 3, dan 4. Walau bagaimanapun, bahagian kanan ialah selang terbuka, jadi 4 tidak disertakan, jadi Salinan pengetahuan tatasusunan menyalin dua elemen 2 dan 3.
Kemudian mari kita bercakap tentang kaedah System.arraycopy Malah, pelajar yang teliti telah mendapati bahawa terdapat kaedah System.arraycopy dalam kod asal dua kaedah sebelumnya . Lapisan bawah mereka juga dilaksanakan oleh kaedah System.arraycopy. Mula-mula kita lihat kod asalnya
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
System.arraycopy tidak dapat melihat kod asal dilaksanakan Sebabnya ialah asli, lapisan asasnya ialah C /. C untuk mencapai ini. Tetapi kelebihan kaedah asli ialah ia dilaksanakan dengan sangat cepat. Kod ini dilaksanakan seperti berikut:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = new int[arr.length]; System.arraycopy(arr,0,copy,0,arr.length); }
Pada masa ini, keseluruhan tatasusunan arr disalin. Jika anda ingin membuat salinan separa, anda boleh melengkapkan salinan separa dengan menukar parameter rasmi.
"
Atas ialah kandungan terperinci Java memahami salinan tatasusunan melalui kod sumber asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!