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.
Perhatikan aba-aba di bawah ini:
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:
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.
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.
Output:
yourArray kini yaitu :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray yaitu :
[1] [2] [3] [4] [5]
Yang terjadi sebetulnya yaitu anda menyalin satu rujukan ke rujukan lainnya dan lalu menciptakan kedua variabel mengarah pada lokasi memori yang sama.
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
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