1. Metode transfer parameter
Untuk menyelesaikan masalah judul, pertama -tama perkenalkan metode parameter passing. Saat ini, ada tiga metode transfer parameter utama untuk berbagai bahasa pemrograman:
1. Lewati Nilai
2. Lulus dengan referensi
3. Lewati Pointer
Metode Representasi Nilai-Passing (Fungsi) menerima salinan variabel yang disediakan oleh penelepon tanpa mengubah nilai parameter; Nilai variabel yang disediakan oleh penelepon disahkan oleh referensi; Nilai nilai (fungsi) diterima oleh pointer oleh pointer diterima oleh pointer tanpa mengubah nilai dan alamat pointer, tetapi alamat yang ditunjukkan oleh pointer dapat diubah.
2. Metode Transfer Parameter Java
Sayangnya, hanya ada satu metode passing parameter yang disediakan oleh Java, yang diteruskan berdasarkan nilai. Artinya, metode ini memperoleh salinan semua nilai parameter, dan metode ini tidak dapat memodifikasi konten variabel parameter yang diteruskan ke sana.
Java Java Jenis parameter dapat dibagi menjadi dua kategori:
1. Jenis Data Dasar
2. Referensi Objek
Teman yang memiliki pengalaman dalam pengembangan Java tahu bahwa untuk tipe data dasar, metode Java tidak dapat mengubah konten variabel. Jadi tidak bisakah konten dimodifikasi dengan mengacu pada objek kelas khusus? Ini dapat dijelaskan dengan contoh sederhana. Kodenya adalah sebagai berikut:
kelas pubpc myclass {private objek num; pubpc myclass (objek num) {this.num = num; } objek pubpc getNum () {return num; } pubpc membatalkan setNum (objek num) {this.num = num; }} kelas pubpc main {pubpc static void change (myclass myclass) {myclass.setnum (100); } pubpc static void main (string [] args) {myclass a = myclass baru (10); System.out.println ("Nilai sebelum memanggil metode perubahan adalah:"+a.getnum ()); Ubah (a); System.out.println ("Nilai setelah memanggil metode perubahan adalah:"+a.getnum ()); }}Hasil output eksekusi kode di atas adalah sebagai berikut:
Dari hasilnya, dapat dilihat bahwa metode perubahan dapat memodifikasi keadaan objek. Dengan kata lain, metode Java dapat mengubah keadaan parameter suatu objek. Jadi apakah ini berarti bahwa metode Java menggunakan tiket referensi untuk parameter tipe data khusus (kelas khusus)? Untuk mengonfirmasi hasilnya, Anda dapat menulis contoh sederhana, dan semua kelas kustom masih myClass di atas. Kodenya adalah sebagai berikut:
pubpc static void swap (myclass A, myclass b) {myclass tmp = a; a = b; B = TMP; } pubpc static void main (string [] args) {myclass a = myclass baru (10); Myclass b = myclass baru (100); System.out.println ("Nilai A sebelum pertukaran adalah:"+a.getnum ()); System.out.println ("Nilai B sebelum pertukaran adalah:"+b.getnum ()); swap (a, b); System.out.println ("Nilai A setelah pertukaran adalah:"+a.getnum ()); System.out.println ("Nilai B setelah pertukaran adalah:"+b.getnum ()); }}Hasil eksekusi adalah sebagai berikut:
Dari hasil di atas, kita dapat menemukan bahwa metode Java masih menggunakan nilai lewat untuk melewati parameter kelas kustom, bukan lewat referensi. Lalu mengapa metode Java dapat memodifikasi keadaan objek?
Anda dapat mempertimbangkan proses eksekusi spesifik memanggil metode perubahan untuk menemukan jawabannya.
Proses eksekusi spesifik adalah:
MyClass diinisialisasi ke dalam salinan dengan parameter aktual A, yang merupakan referensi ke objek.
Metode setnum diterapkan pada referensi objek ini. Jumlah objek MyClass yang dirujuk oleh MyClass dan A diubah menjadi 100.
Setelah metode selesai, variabel parameter myClass tidak lagi digunakan. Dan A terus merujuk ke objek MyClass yang numnya menjadi 100 seperti yang ditunjukkan pada gambar di bawah ini.
Oleh karena itu, alasan mengapa metode Java dapat mengubah keadaan parameter objek adalah bahwa metode ini memperoleh salinan referensi objek, dan referensi objek dan salinan lain dalam metode ini merujuk ke objek yang sama pada saat yang sama.
Sekarang, mari kita ringkas parameter metode java:
Metode tidak dapat memodifikasi parameter tipe data dasar;
Metode dapat mengubah keadaan parameter objek;
Metode tidak dapat membuat parameter objek merujuk ke objek baru (alasannya adalah merujuk ke proses eksekusi tertentu saat memanggil metode perubahan).
3. Pertukaran nilai numerik variabel
Karena Anda sudah tahu alasannya, tidak sulit untuk mengetahui alasannya. Posting kode pribadi saya secara langsung:
pubpc static void swap (myclass A, myclass b) {objek tmp = a.getnum (); a.setnum (b.getnum ()); b.setnum (tmp);}Hasil eksekusi adalah sebagai berikut:
Pertukarannya valid.
Referensi: Volume Teknologi Inti Java I.
Artikel di atas tentang Java Exchange metode implementasi numerik dari dua variabel adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.