Rumah > pembangunan bahagian belakang > C++ > Adakah Java Lulus Parameter mengikut Rujukan atau Nilai, dan Bagaimana Anda Boleh Mencapai Tingkah Laku Seperti Rujukan?

Adakah Java Lulus Parameter mengikut Rujukan atau Nilai, dan Bagaimana Anda Boleh Mencapai Tingkah Laku Seperti Rujukan?

DDD
Lepaskan: 2024-12-29 18:44:14
asal
1046 orang telah melayarinya

Does Java Pass Parameters by Reference or by Value, and How Can You Achieve Reference-Like Behavior?

Melalui Parameter melalui Rujukan dalam Java: Penjelasan

Bertentangan dengan kepercayaan popular, Java tidak menyokong parameter lulus melalui rujukan dengan cara yang sama sebagai kata kunci ref C#. Walau bagaimanapun, persepsi ini berpunca daripada fakta bahawa untuk parameter jenis rujukan, rujukan itu sendiri diluluskan mengikut nilai.

Di Java, semua parameter diluluskan mengikut nilai. Apabila parameter jenis rujukan dihantar kepada kaedah, salinan rujukan dibuat. Ini bermakna perubahan yang dibuat pada rujukan dalam kaedah tidak menjejaskan rujukan di luar kaedah.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

Object o = "Hello";
mutate(o);
System.out.println(o); //Hello

private void mutate(Object o) { o = "Goodbye"; }
Salin selepas log masuk

Kod di atas akan mencetak " Hello" kepada konsol. Ini menunjukkan bahawa rujukan o di dalam kaedah mutate tidak sama dengan rujukan di luar kaedah.

Jika anda ingin mengubah suai rujukan itu sendiri, anda mesti gunakan parameter jenis rujukan eksplisit, seperti java.util.concurrent.atomic.AtomicReference. Berikut ialah contoh:

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); //Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
Salin selepas log masuk

Dalam kes ini, parameter ref diluluskan melalui rujukan dan nilai rujukan diubah suai dalam kaedah mutasi. Akibatnya, kod akan mencetak "Selamat tinggal!" ke konsol.

Atas ialah kandungan terperinci Adakah Java Lulus Parameter mengikut Rujukan atau Nilai, dan Bagaimana Anda Boleh Mencapai Tingkah Laku Seperti Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan