Java中值传递与引用传递之间的区别分析(附代码)
本篇文章给大家带来的内容是关于Java中值传递与引用传递(地址传递)之间的区别分析(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
值传递(pass by value)是指在调用函数时将实际参数 复制 一份传递到函数中,这样在函数中如果对 参数 进行修改,将不会影响到实际参数。传递对象往往为整型浮点型字符型等基本数据结构。
public class PassByValueReference { //值传递 public static void main(String[] args) { int x = 9; pass(x); System.out.println(x); } private static void pass(int y) { System.out.println(y); y=0; } }
下为运行结果:(整型y的值变化没有影响整型x的值)
引用传递(pass by reference)是指在调用函数时将实际参数的地址 直接 传递到函数中,那么在函数中对 参数 所进行的修改,将影响到实际参数。(类似于共同体) 传递对象往往为数组等地址数据结构。
public class PassByValueReference { //引用传递 public static void main(String[] args) { int [] x = {9}; System.out.println(x[0]); pass(x); System.out.println(x[0]); } public static void pass(int [] y) { y[0] = 0; } }
下为运行结果:(数组y的值变化同时影响数组x的值)
(值传递与引用传递在计算机数据结构中用到了栈与堆的知识)
另外,如果还没接触Java中的函数与方法相关知识的,可简单借助赋值理解:(运行结果与上面类似)
public class PassByValueReference { //值传递(赋值非函方式) public static void main(String[] args) { int x = 9; System.out.println(x); y = x; y = 10; System.out.println(x); } }
这里x与y就是基本数据类型,赋值后把x的值传给了y,相当于是复制了一份副本,而不是把整个x(即x地址)给了y。
public class PassByValueReference { //引用传递(赋值非函方式) public static void main(String[] args) { int [] x = {1}; System.out.println(x[0]); int [] y = x; y[0] = 0; System.out.println(x[0]); } }
这里x与y是数组,这次的代码中不是简单地令x[0]=y[0],而是直接令x=y,此赋值语句把x的数组地址都给了y,相当于是在“同一条船上”了,一起发生变化,y[0]变了同时x[0]也改变。
相关推荐:
Atas ialah kandungan terperinci Java中值传递与引用传递之间的区别分析(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panggilan fungsi dalam PHP boleh dihantar melalui nilai atau rujukan. Lalai adalah untuk lulus mengikut nilai, fungsi menerima salinan parameter, dan pengubahsuaian padanya tidak menjejaskan nilai asal. Rujukan lulus diisytiharkan dengan menambahkan simbol & sebelum parameter, dan fungsi tersebut secara langsung mengubah suai pembolehubah yang diluluskan. Melewati rujukan berguna apabila anda memerlukan fungsi untuk mengubah suai pembolehubah luaran, seperti elemen tatasusunan.

Tidak. Go tidak mempunyai pembolehubah rujukan, jadi tiada rujukan lulus semasa memanggil fungsi dalam bahasa Go. Setiap pembolehubah yang ditakrifkan dalam program Go menduduki lokasi memori yang unik Tidak mungkin untuk mencipta dua pembolehubah yang berkongsi lokasi memori yang sama adalah mungkin untuk mencipta dua pembolehubah yang menghala ke lokasi memori yang sama, tetapi ini tidak sama dengan dua pembolehubah berkongsi memori yang sama Lokasinya berbeza.

Cara memahami kaedah lulus nilai dengan betul dalam PHP PHP ialah bahasa skrip yang digunakan secara meluas dalam pembangunan Web, dan kaedah lulus parameter dalam PHP terutamanya termasuk lulus nilai dan lulus rujukan. Dan memahami bagaimana nilai dihantar dalam PHP adalah penting untuk menulis kod yang cekap. Artikel ini akan membincangkan kaedah lulus nilai dalam PHP secara terperinci dan menggunakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. Konsep asas kaedah lulus nilai adalah untuk menyalin nilai pembolehubah dan menghantarnya kepada fungsi atau kaedah Operasi pada nilai dalam fungsi tidak akan menjejaskannya.

Analisis mendalam tentang perbezaan antara lulus nilai dan lulus rujukan dalam Java Dalam pengaturcaraan Java, kita sering menghadapi situasi lulus parameter, dan terdapat dua cara lulus parameter: lulus nilai dan lulus rujukan. Kedua-dua kaedah penghantaran ini mempunyai ciri dan senario aplikasi yang berbeza di Jawa. Pass-by-Value merujuk kepada menghantar nilai parameter sebenar kepada parameter formal apabila fungsi dipanggil Pengubahsuaian kepada parameter formal dalam fungsi tidak akan menjejaskan nilai parameter sebenar. Rujukan lewat

Melepasi nilai adalah untuk menghantar salinan parameter kepada fungsi, jadi fungsi menerima salinan nilai parameter, bukan parameter itu sendiri Sebarang pengubahsuaian pada parameter di dalam fungsi hanya akan mempengaruhi salinan ini dan bukan pembolehubah asal. nilai. Pass by reference adalah untuk menghantar alamat atau rujukan parameter kepada fungsi. Ini bermakna bahawa fungsi menerima rujukan kepada data asal, bukan salinan data. Sebarang pengubahsuaian pada parameter di dalam fungsi akan menjejaskan data asal secara langsung. Kedua-dua kaedah penyampaian ini mempunyai aplikasi, kelebihan dan keburukan tersendiri dalam bahasa pengaturcaraan dan senario yang berbeza.

Dalam Go, parameter fungsi boleh dihantar mengikut nilai atau dengan penuding. Lulus nilai memberikan salinan, dan pengubahsuaian pada salinan tidak akan menjejaskan nilai asal, hantaran penunjuk melepasi alamat, dan pengubahsuaian pada kandungan akan ditunjukkan dalam nilai asal. Dalam amalan, hantaran penunjuk boleh digunakan untuk mengoptimumkan kod, contohnya semasa mengisih kepingan. Memilih kaedah penghantaran yang betul adalah penting untuk mengoptimumkan kod anda dan meningkatkan prestasi.

Perbezaan antara pemindahan nilai Java dan pemindahan rujukan: 1. Pemindahan jenis data asas 2. Pemindahan objek 3. Pengubahsuaian penunjuk rujukan; Pengenalan terperinci: 1. Pemindahan jenis data asas Untuk jenis data asas, Java menggunakan pemindahan nilai Apabila pembolehubah jenis data asas dihantar sebagai parameter kepada kaedah, nilai pembolehubah sebenarnya dipindahkan, bukan nilai. daripada pembolehubah. Rujukannya, yang bermaksud bahawa pengubahsuaian kepada parameter ini dalam kaedah tidak akan menjejaskan nilai pembolehubah asal 2. Pemindahan objek, untuk rujukan objek, keadaan adalah berbeza, dsb.

Perbezaan antara lulus nilai dan lulus rujukan dalam C++: lulus nilai mencipta salinan parameter dan tidak menjejaskan pembolehubah asal lulus rujukan secara langsung mengendalikan parameter, dan pengubahsuaian dicerminkan dalam pembolehubah asal. Kes praktikal: pertukaran dua nilai integer tidak akan bertukar, tetapi lulus melalui rujukan akan.
