Rumah  >  Artikel  >  Java  >  Kajian mendalam tentang perbezaan antara nilai lulus dan rujukan lulus dalam Java dan kesannya

Kajian mendalam tentang perbezaan antara nilai lulus dan rujukan lulus dalam Java dan kesannya

王林
王林asal
2024-01-30 08:27:13799semak imbas

Kajian mendalam tentang perbezaan antara nilai lulus dan rujukan lulus dalam Java dan kesannya

Terokai secara mendalam perbezaan dan kesan hantaran nilai dan hantaran rujukan dalam Java

Dalam pengaturcaraan Java, hantaran nilai dan hantaran rujukan ialah dua kaedah lulus parameter biasa. Walau bagaimanapun, bagi pemula, ia boleh menjadi agak mengelirukan untuk memahami perbezaan antara kedua-dua kaedah penyampaian ini dan kesannya terhadap program. Artikel ini akan menyelidiki konsep nilai lulus dan rujukan lulus dalam Java dan menggambarkan perbezaannya serta kesannya melalui contoh kod konkrit.

Pertama, mari kita fahami apa itu nilai lulus dan rujukan lulus. Di Java, apabila menghantar parameter kepada kaedah, ia boleh dilakukan dengan nilai atau rujukan. Ringkasnya, lulus mengikut nilai bermakna menyalin nilai parameter kepada parameter formal kaedah Apabila kaedah menggunakan nilai ini, ia hanya boleh beroperasi pada salinannya sendiri dan tidak mempunyai kesan pada parameter asal. Lulus melalui rujukan menghantar rujukan (alamat) parameter kepada parameter formal kaedah Kaedah boleh mengendalikan nilai parameter asal melalui rujukan ini.

Seterusnya, contoh kod untuk menggambarkan perbezaan antara lulus mengikut nilai dan lulus melalui rujukan.

public class PassByValueExample {
    public static void main(String[] args) {
        int num = 10;
        modifyValue(num);
        System.out.println("Value after modifyValue method: " + num);

        StringBuilder sb = new StringBuilder("Hello");
        modifyReference(sb);
        System.out.println("Reference after modifyReference method: " + sb.toString());
    }

    public static void modifyValue(int value) {
        value = 20;
    }

    public static void modifyReference(StringBuilder reference) {
        reference.append(" World");
    }
}

Dua kaedah ditakrifkan dalam kod: modifyValue dan modifyReference. Kaedah modifyValue menerima parameter jenis asas value dan mengubah nilainya kepada 20 kaedah modifyReference menerima parameter jenis rujukan reference , "World" dilampirkan pada rentetan asal. <code>modifyValuemodifyReferencemodifyValue方法接受一个基本类型的参数value,将其值修改为20;modifyReference方法接受一个引用类型的参数reference,在原有字符串的基础上追加了" World"。

在主方法中,我们先定义了一个整型变量num并初始化为10,然后调用modifyValue方法,并输出修改后的值num,最后得到的结果是:Value after modifyValue method: 10。可见,modifyValue方法对num进行的修改并未影响原始值。这是因为modifyValue方法中的value只是一个副本,对其进行修改并不会影响原始变量。

接下来,我们定义了一个StringBuilder对象sb并初始化为"Hello",同样调用modifyReference方法,并输出修改后的引用sb。此时,得到的结果是:Reference after modifyReference method: Hello World。显然,modifyReference方法对sb进行的修改同样影响了原始变量。这是因为modifyReference方法中的reference

Dalam kaedah utama, kita mula-mula mentakrifkan pembolehubah integer num dan memulakannya kepada 10, kemudian memanggil kaedah modifyValue dan mengeluarkan nilai yang diubah suai num code>, hasil akhir ialah: Nilai selepas kaedah modifyValue: 10. Dapat dilihat bahawa pengubahsuaian <code>num oleh kaedah modifyValue tidak menjejaskan nilai asal. Ini kerana value dalam kaedah modifyValue hanyalah salinan dan mengubah suainya tidak akan menjejaskan pembolehubah asal.

Seterusnya, kami mentakrifkan objek StringBuilder sb dan memulakannya kepada "Hello", juga memanggil kaedah modifyReference dan mengeluarkan Petikan yang diubah suai sb. Pada masa ini, keputusan yang diperoleh ialah: Rujukan selepas modifyReference kaedah: Hello World. Jelas sekali, pengubahsuaian yang dibuat kepada sb oleh kaedah modifyReference juga mempengaruhi pembolehubah asal. Ini kerana reference dalam kaedah modifyReference adalah merujuk kepada objek asal Mengubah suai kandungan objek melalui rujukan ini akan mempengaruhi objek asal.

Seperti yang dapat dilihat daripada contoh kod di atas, perbezaan antara hantaran nilai dan hantaran rujukan dalam Java terutamanya ditunjukkan dalam cara parameter jenis asas dan jenis rujukan diproses. Apabila parameter jenis asas dihantar kepada kaedah, nilainya disalin, dan kaedah hanya boleh beroperasi pada salinannya sendiri apabila parameter jenis rujukan dihantar kepada kaedah, rujukan (alamat) diluluskan; dan kaedah boleh lulus Rujukan ini beroperasi terus pada objek asal.

Dalam pengaturcaraan sebenar, memahami perbezaan antara lulus mengikut nilai dan lulus melalui rujukan adalah sangat penting untuk mengendalikan parameter dengan betul dan mengelakkan kemungkinan ralat. Terutama apabila berurusan dengan parameter jenis rujukan, anda perlu memberi perhatian sama ada kandungan objek asal akan diubah suai. 🎜🎜Ringkasnya, artikel ini meneroka secara mendalam perbezaan dan kesan lulus nilai dan hantaran rujukan di Jawa. Melalui contoh kod khusus, kami memahami gelagat berbeza bagi parameter jenis asas dan parameter jenis rujukan semasa proses pemindahan, yang membantu kami lebih memahami mekanisme pemindahan parameter dalam program Java dan menulis kod dengan betul. 🎜

Atas ialah kandungan terperinci Kajian mendalam tentang perbezaan antara nilai lulus dan rujukan lulus dalam Java dan kesannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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