Cara Mengcopy Array Dalam Aktivitas Java

Dalam Java, anda sanggup memakai pernyataan penetapan atau tanda =,  untuk menyalin tipe data primitif, namun tidak demikian dengan array. Apa yang terjadi saat anda menetapkan variabel suatu array ke variabel array lainnya?

Yang terjadi sebetulnya yaitu anda menyalin satu rujukan ke rujukan lainnya dan lalu menciptakan kedua variabel mengarah pada lokasi memori yang sama.


  Apa yang terjadi saat anda menetapkan variabel suatu array ke variabel array lainnya Cara Mengcopy Array Dalam Program Java



Perhatikan aba-aba di bawah ini:


 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
public class CopyArray {    public static void main(String args []){      int myArray [] = {1, 2, 3, 4, 5};      int yourArray [] = {5, 6, 7 , 8 ,10};      yourArray = myArray;       System.out.println("yourArray kini yaitu : " );       for (int i = 0; i < yourArray.length; i++){          System.out.print("["+ yourArray[i] + "]" + " " );         }        System.out.println();    System.out.println("Setelah nilai index 0 myArray diubah "      + "menjadi 100, yourArray yaitu : " );    myArray[0] = 100;        for (int i = 0; i < yourArray.length; i++){          System.out.print("["+ yourArray[i] + "]" + " " );           }         }  } 

Output:
yourArray kini yaitu :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray yaitu :
[100] [2] [3] [4] [5]

Pada pernyataan baris 9 yaitu yourArray = myArray, ini tidak menyalin isi dari myArray ke yourArray, namun hanya menyalin rujukan nilai dari myArray ke yourArray, oleh alasannya yaitu itu saat nilai myArray pada index 0 diganti dengan 100, maka nilai pada index 0 untuk yourArray juga akan berubah.

Terus bagaimana dengan nasib dari array yang sebelumnya direferensikan dengan yourArray, yaitu dengan konten elemen {5, 6, 7, 8, 9,10}? Array yang sebelumnya direferensikan dengan yourArray akan menjadi sampah, yang secara otomatis akan dikumpulkan oleh Java Virtual Machine, proses ini dikenal dengan istilah garbage collection.

Ada 3 cara untuk menyalin array, yaitu:
  • Menggunakan method clone untuk menyalin array
  • Menggunakan method static arraycopy yang terdapat dalam class System.
  • Menggunakan loop untuk menyalin elemen individu secara satu persatu 
Kali ini hanya akan di bahas mengenai penggunaan loop dan method arraycopy saja, alasannya yaitu penggunaan method clone bekerjasama dengan class abstract dan juga interfaces.

Menggunakan loop

Pertama kita akan memakai loop, alasannya yaitu lebih familiar untuk pemula sehingga gampang dimengerti saat menyalin elemen individu dari array, yang penting mengetahui terlebih dahulu mengenai proses dasar pada array, misalnya ibarat di bawah ini:


 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
public class CopyArray {    public static void main(String args []){      int myArray [] = {1, 2, 3, 4, 5};      int yourArray [] = {5, 6, 7 , 8 ,10};      //loop untuk menyalin elemen array   yourArray = new int[myArray.length];   for (int i = 0; i < myArray.length; i++) {   yourArray[i] = myArray[i];   }       System.out.println("yourArray kini yaitu : " );       for (int i = 0; i < yourArray.length; i++){          System.out.print("["+ yourArray[i] + "]" + " " );         }        System.out.println();    System.out.println("Setelah nilai index 0 myArray diubah "      + "menjadi 100, yourArray yaitu : " );    myArray[0] = 100;        for (int i = 0; i < yourArray.length; i++){           System.out.print("["+ yourArray[i] + "]" + " " );         }             }  } 

Output:
yourArray kini yaitu :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray yaitu :
[1] [2] [3] [4] [5]

Bisa dilihat perbandingannya, walaupun myArray diubah pada nilai index 0 menjadi 100, namun nilai elemen yourArray yaitu tetap hasil salinan dari myArray, alasannya yaitu myArray dan yourArray tetap menjadi rujukan dari dua array yang berbeda.

Menggunakan method copyarray

Selanjutnya dengan memakai method copyarray dari class java.lang.System, syntax dari method ini adalah:
             arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

Parameter dari srcPos dan tarPos mengindikasikan posisi awal dari array sumber / sourceArray dan array sasaran / targetArray. Jumlah dari banyaknya elemen yang disalin dari sourceArray ke targetArray diindikasikan dengan length.

Method copyarray ini tidak mengalokasikan ruang memori untuk targetArray, jadi targetArray harus terlebih dahulu dibentuk dengan dialokasikan ruang memori. Barulah sesudah penyalinan dilakukan, maka sourceArray dan targetArray akan mempunyai konten yang sama namun dengan lokasi memori yang terpisah.


 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
public class CopyArray {    public static void main(String args []){      int myArray [] = {1, 2, 3, 4, 5};      int yourArray [] = {5, 6, 7 , 8 ,10};      //Peran loop digantikan oleh method dari java.lang.System   //yaitu method arraycopy   System.arraycopy(myArray, 0, yourArray, 0, myArray.length);       System.out.println("yourArray kini yaitu : " );       for (int i = 0; i < yourArray.length; i++){          System.out.print("["+ yourArray[i] + "]" + " " );         }        System.out.println();    System.out.println("Setelah nilai index 0 myArray diubah "      + "menjadi 100, yourArray yaitu : " );    myArray[0] = 100;        for (int i = 0; i < yourArray.length; i++){           System.out.print("["+ yourArray[i] + "]" + " " );         }             }  } 

Output:
yourArray kini yaitu :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray yaitu :
[1] [2] [3] [4] [5]

Belum ada Komentar untuk "Cara Mengcopy Array Dalam Aktivitas Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel