Rumah  >  Soal Jawab  >  teks badan

java - Bantuan: Analisis kod berikut secara terperinci, saya keliru.

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?

阿神阿神2735 hari yang lalu701

membalas semua(3)saya akan balas

  • 迷茫

    迷茫2017-05-17 10:01:16

    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.

    balas
    0
  • PHP中文网

    PHP中文网2017-05-17 10:01:16

    Tidak, aa di dalam fungsi menghala ke alamat baharu, dan aa luaran masih menunjuk ke alamat "BB", jadi hasilnya ialah BB

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-17 10:01:16

    Fungsi ini tidak melepasi AA dalam fungsi UTAMA apabila menghantar nilai, tetapi membuat salinan nilai AA dan kemudian menghantarnya masuk

    balas
    0
  • Batalbalas