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:
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!