Passing Array Pada Method Java

Bila sebelumnya anda sudah mengetahui passed-by-value pada method untuk tipe data primitif, kemudian bagaimana halnya dengan array? Ketika anda melaksanakan passing array terhadap method, maka acuan dari array tersebut yang dilewatkan pada method tersebut.

Berikut ini yakni pola instruksi dengan method tampilkanElemenArray untuk menampilkan elemen array dengan tipe int.


  Ketika anda melaksanakan passing array terhadap  Passing Array Pada Method Java


Contoh:

public class PassingArray{
   
    public static void main (String args []){
       
        int angka [] = {5,6,7,8,9,10};
        tampilkanElemenArray(angka);
       
    }
   
    public static void tampilkanElemenArray(int array []){
        System.out.print("Elemen array adalah: ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }

}


Output:
Elemen array adalah: 5 6 7 8 9 10

Pada pernyataan di bawah ini yakni pola memanggil method tampilkanElemenArray untuk menampilkan 5, 6, 7, 8, 9 dan 10.

Contoh:

public class PassingArray{
   
    public static void main (String args []){
       
        tampilkanElemenArray(new int [] {5, 6, 7, 8, 9,10});
    }
   
    public static void tampilkanElemenArray(int array []){
        System.out.print("Elemen array adalah: ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }

}


Output:
Elemen array adalah: 5 6 7 8 9 10

Pernyataan tampilkanElemenArray(new int [] {5, 6, 7, 8, 9,10});, pada instruksi di atas menciptakan array dengan syntax:

new elementType[]{value0, value1, ..., valuek};

Pada syntax tersebut dinyatakan bahwa array tidak mempunyai variabel referensi, sehingga array ibarat ini disebut juga dengan anonymous array.

Perbedaan Passing Nilai Variabel Primitif Dengan Passing Array Pada Method

Ada beberapa perbedaan yang harus diketahui antara passing nilai variabel primitif dengan passing array pada method, diantaranya adalah:


  • Untuk argumen dengan tipe data primitif, maka nilai yang dimiliki argumen akan dilewatkan (passed)
  • Untuk argumen dengan tipe array, nilai dari argumen yakni acuan dari array tersebut; nilai dari acuan itu dilewatkan (passed) pada method. Maka array yang berada dalam method yakni sama dengan array yang berada di luar method, sehingga dikala array yang di dalam method berubah, maka array yang berada diluar method juga akan berubah.
Contoh 1:

public class PassingArray{
   
    public static void main (String args []){
       
        int a = 10;
        int b [] = new int [5];
        tampilkan(a, b);
       
        System.out.println("nilai a adalah: " + a);
        System.out.println("nilai elemen array b pada index 0 yakni "
                            + b[0]);
       
    }
   
    public static void tampilkan(int angka, int arr []){
       
        angka = 5000;
        array [0] = 5000;
       
    }

}


Output:
nilai a adalah: 10
nilai elemen array b pada index 0 yakni 5000


Yang menjadi pertanyaan yakni kenapa nilai x yakni tetap 10, sementara nilai elemen array b[0] berkembang menjadi 5000?

Hal ini alasannya yakni b dan arr, walaupun keduanya yakni variabel yang saling bebas, namun mereka bereferensi pada array yang sama. Ketika method tampilkan(a, b); dipanggil, maka nilai dari a dan b dilewatkan
pada angka dan arr. Dikarenakan b mengandung nilai acuan terhadap array, maka arr juga kini mengandung nilai acuan yang sama pada array yang sama.


Perhatikan juga instruksi di bawah ini.

Contoh 2:

public class PassingArray{
   
    public static void main (String args []){
       
        int x [] = {11, 12};
       
        tukarElemen(x[0], x[1]);
        System.out.println(x[0] + " " + x[1]);
    }
    

    //Metod untuk menukar elemen
    public static void tukarElemen(int elemen1, int elemen2) {
        int temp = elemen1;
        elemen1 = elemen2;
        elemen2 = temp;
    }

}


Output:
11 12

Setelah diekesekusi, mengapa elemen dari array x tidak berkembang menjadi 12 11?

Hal ini alasannya yakni parameter dalam method tukarElemen yakni tipe primitif, sehingga nilai dari x[0] dan x[1] di lewatkan pada elemen1 dan elemen2 di dalam method dikala memanggil dengan pernyataan tukarElemen(x[0], x[1]);

Lokasi memori untuk elemen1 dan juga elemen2 yakni saling bebas baik itu untuk x[0] ataupun untuk x[1], sehingga konten dari array tidak terpengaruh dengan memanggil method ini.

Perhatikan instruksi di bawah ini.

Contoh 3:

public class PassingArray{
   
    public static void main (String args []){
       
        int x [] = {11, 12};
       
        tukarElemen(x);
        System.out.println(x[0] + " " + x[1]);
    }
   
    public static void tukarElemen(int[] array) {
        int temp = array[0];
        array[0] = array[1];
        array[1] = temp;
    }

}


Output:
12 11

Kode di atas berhasil menukar elemen array, mengapa? 

Karena parameter di dalam method tukarElemen pada instruksi di atas yakni array. Ketika dieksekusi, maka variabel acuan dari array dilewatkan pada method. 

Selanjutnya yang terjadi yakni variabel x yang berada diluar method dan array yang berada di dalam method keduanya merupakan acuan terhadap array dalam lokasi memori yang sama. Oleh alasannya yakni itu, melaksanakan pertukaran array[0] dengan array[1] di dalam method yakni sama halnya dengan melaksanakan pertukaran x[0] dan x[1] di luar method.



Belum ada Komentar untuk "Passing Array Pada Method Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel