Rumah >Java >javaTutorial >Adakah Array Lulus di Jawa mengikut Nilai atau Rujukan?

Adakah Array Lulus di Jawa mengikut Nilai atau Rujukan?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 04:34:08498semak imbas

Is Array Passing in Java by Value or by Reference?

Adakah Tatasusunan Melepasi Nilai atau Rujukan dalam Java?

Java berbeza daripada bahasa pengaturcaraan lain dalam pendekatannya terhadap pengendalian objek. Tidak seperti jenis primitif seperti integer atau aksara, tatasusunan dalam Java berkelakuan unik. Untuk memahami tingkah laku mereka, adalah penting untuk membezakan antara objek melalui nilai dan rujukan.

Melalui Nilai atau Rujukan dalam Java

Di Jawa, semuanya dilalui dengan nilai. Walau bagaimanapun, apabila menghantar tatasusunan, ia lebih bernuansa. Tatasusunan bukan primitif, tetapi ia juga bukan objek dalam erti kata tradisional. Sebaliknya, ia pada asasnya merujuk kepada objek pada timbunan.

Apabila tatasusunan dihantar kepada kaedah, rujukan kepada tatasusunan diluluskan oleh nilai. Ini bermakna salinan rujukan dihantar, bukan tatasusunan sebenar itu sendiri.

Implikasi untuk Tingkah Laku Tatasusunan

Memandangkan rujukan kepada tatasusunan itu diluluskan mengikut nilai, sebarang perubahan yang dibuat pada kandungan tatasusunan melalui rujukan itu akan mempengaruhi tatasusunan asal. Sebagai contoh, jika nilai elemen tatasusunan diubah suai dalam kaedah, perubahan itu akan ditunjukkan dalam tatasusunan asal.

Walau bagaimanapun, menukar rujukan itu sendiri untuk menunjuk kepada tatasusunan yang berbeza tidak akan mengubah rujukan asal dalam kaedah. Dalam erti kata lain, rujukan yang dihantar kepada kaedah tetap sama, walaupun tatasusunan yang ditunjukkannya ditukar.

Contoh Kod untuk Kejelasan

Untuk menggambarkan konsep ini, pertimbangkan kod berikut:

public static void changeContent(int[] arr) {
    // If we change the content of arr.
    arr[0] = 10;  // Will change the content of array in main()
}

public static void changeRef(int[] arr) {
    // If we change the reference
    arr = new int[2];  // Will not change the array in main()
    arr[0] = 15;
}

public static void main(String[] args) {
    int[] arr = new int[2];
    arr[0] = 4;
    arr[1] = 5;

    changeContent(arr);

    System.out.println(arr[0]);  // Will print 10.. 

    changeRef(arr);

    System.out.println(arr[0]);  // Will still print 10.. 
                                 // Change the reference doesn't reflect change here..
}

Dalam contoh ini, kaedah changeContent mengubah suai kandungan tatasusunan dengan menetapkan elemen pertama hingga 10. Perubahan dicerminkan dalam tatasusunan asal dalam utama. Ini menunjukkan bahawa mengubah suai kandungan tatasusunan yang diluluskan melalui rujukan mempengaruhi tatasusunan asal.

Sebaliknya, kaedah changeRef memperuntukkan tatasusunan baharu kepada arr rujukan. Perubahan ini tidak ditunjukkan dalam tatasusunan asal dalam utama kerana rujukan itu sendiri tidak diluluskan oleh nilai.

Atas ialah kandungan terperinci Adakah Array Lulus di Jawa mengikut Nilai atau Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn