Rumah >Java >javaTutorial >Adakah Array Lulus di Jawa mengikut Nilai atau Rujukan?
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!