kelas awam T1 {
public static void rename(String aa){
aa="AA";
}
public static void main(String args[ ]){
String aa="BB";
rename(aa);
System.out.println(aa);
}
}
Pemahaman saya:
aa dalam kaedah menamakan semula adalah dalam ingatan tindanan, dan aa dalam kaedah utama adalah dalam ingatan timbunan Melaksanakan kaedah nama semula tidak akan mengubah nilai aa dalam kaedah utama, adakah itu benar?
Panggilan mengikut nilai ialah strategi penilaian yang paling biasa digunakan: parameter formal fungsi ialah salinan parameter sebenar yang diluluskan apabila dipanggil. Mengubah suai nilai parameter formal tidak menjejaskan parameter sebenar.
Apabila dipanggil melalui rujukan, parameter formal fungsi menerima rujukan tersirat kepada parameter sebenar, bukannya salinan. Ini bermakna jika nilai parameter fungsi diubah, parameter sebenar juga akan diubah suai. Pada masa yang sama kedua-duanya menunjukkan nilai yang sama.
Java Core Technology (I) menyebut bahawa Java semuanya diluluskan oleh nilai Pertama sekali, untuk jenis asas, fungsi tidak boleh mengubah suai nilainya Untuk jenis rujukan, fungsi tidak boleh mengubah suainya untuk menunjuk ke objek lain. Jadi semuanya diluluskan oleh nilai.
Tidak, aa di dalam fungsi menghala ke alamat baharu, dan aa luaran masih menunjuk ke alamat "BB", jadi hasilnya ialah BB
Fungsi ini tidak melepasi AA dalam fungsi UTAMA apabila menghantar nilai, tetapi membuat salinan nilai AA dan kemudian menghantarnya masuk