Rumah >Java >javaTutorial >Tatasusunan Java: Lulus dengan Nilai atau Lulus Rujukan?

Tatasusunan Java: Lulus dengan Nilai atau Lulus Rujukan?

Susan Sarandon
Susan Sarandonasal
2024-12-29 08:03:14576semak imbas

Java Arrays: Pass by Value or Pass by Reference?

Java Array: Value or Reference Passing?

Array dalam Java memegang status istimewa, bukan jenis primitif mahupun objek lengkap. Sifat unik ini menimbulkan persoalan: adakah tatasusunan Java diluluskan mengikut nilai atau rujukan?

Semua dalam Java diluluskan mengikut nilai. Ini termasuk tatasusunan. Apabila anda menghantar tatasusunan kepada kaedah, apa yang sebenarnya diluluskan ialah rujukan kepada tatasusunan itu, bukan tatasusunan itu sendiri.

Oleh itu, sebarang pengubahsuaian yang dibuat pada kandungan tatasusunan melalui rujukan itu akan memberi kesan kepada tatasusunan asal . Walau bagaimanapun, mengubah rujukan untuk menunjuk kepada tatasusunan baharu tidak akan menjejaskan rujukan yang dipegang dalam kaedah asal.

Pertimbangkan coretan Java berikut:

public class ArrayPassingDemo {

    public static void changeContent(int[] arr) {
        arr[0] = 10; // Changes the content of the array in main()
    }

    public static void changeRef(int[] arr) {
        arr = new int[2]; // Does 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 (since the reference change isn't reflected)
    }
}

Dalam contoh ini:

  • changeContent mengubah suai kandungan tatasusunan, yang ditunjukkan dalam main().
  • changeRef cuba menukar rujukan tatasusunan tetapi gagal, kerana rujukan asal kekal tidak terjejas dalam main().

Tingkah laku ini menyerlahkan bahawa tatasusunan dalam Java diluluskan oleh nilai, walaupun operasi hantaran melibatkan rujukannya.

Atas ialah kandungan terperinci Tatasusunan Java: Lulus dengan Nilai atau Lulus 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