Rumah > Java > javaTutorial > Adakah Tatasusunan Lulus dengan Nilai atau Rujukan di Jawa?

Adakah Tatasusunan Lulus dengan Nilai atau Rujukan di Jawa?

Patricia Arquette
Lepaskan: 2025-01-01 05:01:09
asal
152 orang telah melayarinya

Are Arrays Passed by Value or by Reference in Java?

Melalui Tatasusunan dalam Java: Nilai lwn. Rujukan

Tidak seperti jenis primitif, tatasusunan dalam Java bukan primitif mahupun objek. Ini menimbulkan persoalan: adakah mereka lulus mengikut nilai atau melalui rujukan dalam Java?

Memahami Nilai dan Lulus Rujukan

Di Java, semuanya diluluskan oleh nilai. Ini bermakna salinan nilai sebenar disimpan dalam pembolehubah penerima. Untuk primitif, seperti integer atau rentetan, ini hanya menduplikasi nilai. Walau bagaimanapun, untuk objek dan tatasusunan, ia sedikit lebih kompleks.

Melalui Tatasusunan: Rujukan Sahaja

Walaupun tatasusunan bukan objek sebenar, ia tetap dianggap sebagai rujukan . Oleh itu, apabila tatasusunan dihantar kepada kaedah, hanya rujukan kepada tatasusunan yang benar-benar diluluskan, bukan tatasusunan itu sendiri. Ini menunjukkan bahawa sebarang perubahan yang dibuat pada kandungan tatasusunan akan ditunjukkan dalam tatasusunan asal.

Menukar Kandungan Tatasusunan lwn Rujukan

Mengubah suai tatasusunan dalam kaedah tidak menjejaskan tatasusunan asal kerana rujukan yang diluluskan. Walau bagaimanapun, menukar rujukan itu sendiri, seperti menetapkannya kepada tatasusunan baharu, tidak akan mengubah rujukan dalam kaedah asal. Ini kerana rujukan itu sendiri ialah nilai yang diluluskan oleh nilai.

Contoh

Contoh berikut menggambarkan tingkah laku ini:

public static void changeContent(int[] arr) {
    arr[0] = 10;  // Modifies the array's content
}

public static void changeRef(int[] arr) {
    arr = new int[2];  // Changes the reference
    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]);  // Prints 10 (content changed)

    changeRef(arr);
    System.out.println(arr[0]);  // Prints 10 (reference not changed)
}
Salin selepas log masuk

Dalam kes ini, kaedah changeContent() mengubah suai kandungan tatasusunan, mempengaruhi tatasusunan asal. Walau bagaimanapun, kaedah changeRef() mengubah rujukan itu sendiri, yang tidak menjejaskan tatasusunan asal.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan