Jadual Kandungan
一 概述
1.什么是参数传递?" >1.什么是参数传递?
2.变量类型" >2.变量类型
二 值传递" > 二 值传递
1.什么是值传递? " > 1.什么是值传递?
2.原始变量" >2.原始变量
3.String" >3.String
4.StringBuilder" >4.StringBuilder
2.自定义类型" >2.自定义类型
 三 引用传递" > 三 引用传递
1.什么是引用传递? " > 1.什么是引用传递?
Rumah Java javaTutorial 什么是参数传递?他有什么用?

什么是参数传递?他有什么用?

Jul 21, 2017 pm 10:03 PM
java parameter

一 概述

1.什么是参数传递?

调用方法时向形参传递数据的过程叫做参数传递。在编程语言中有两种传递方式:值传递与引用传递。必须强调的是,这里提到的两种传递方式不是仅限于java使用到的传递方式,而是出现在包括java在内的多种编程语言中的传递方式。

2.变量类型

在java中,我们将指向基本类型数据的变量称为原始变量,将指向对象的变量称为引用变量。

二 值传递

1.什么是值传递?

将变量的副本传入方法,方法内外操作隔离,在方法内对变量的操作不会反映到方法外的变量中。

2.原始变量

    public void change(int b) {
        b = 7;
    }

    @Testpublic void testBasic() {int a = 9;
        change(a);
        System.out.println(a);
    }
Salin selepas log masuk

实际输出:9

在参数传递时,按照值传递的规则,变量b接收一个a的副本,同样指向字面值“9”:

接下来,在方法内部,为b赋值7,这样b指向7,由于a与b是两个相互独立的变量,两者之间没有引用与被引用的关系,a依然指向9:

3.String

    public void change(String str01) {
        str01 = "baidu";
    }

    @Testpublic void testString() {
        String str = new String("www.baidu.com");
        change(str);
        System.out.println(str);
    }
Salin selepas log masuk

实际输出:www.baidu.com

在参数传递时,str将自身的一个副本传递给str01,这样str01也指向堆中存放“www.baidu.com”的对象:

在方法内部为str01赋值,这样str01就指向方法区字符串常量池中的"baidu",str依然指向堆中的“www.baidu.com”,str与str01指向不同的对象,相互之间不影响:

这里需要注意一点:java将String设计成不可改变的对象,即一旦String对象包含的字面值发生改变,java就会新建一个对象,并将变量指向新的对象。

4.StringBuilder

    public void change(StringBuilder builder01) {
        builder01.append(" World!");
    }

    @Testpublic void testStringBuilder() {
        StringBuilder builder = new StringBuilder("Hello");
        change(builder);
        System.out.println(builder);
    }
Salin selepas log masuk

实际输出:Hello World!

在参数传递完成以后,builder01变量获得builder变量的一个副本,副本与原始变量指向堆中同一个对象:

在方法内部,变量builder没有指向新的对象,依然与builder指向同一对象,所以当builder访问堆中同一对象时,数据发生改变:

5.自定义类型

public class MyInner {public int a;
}public class Test{public void change(MyInner in01) {
        in01.a = 1;
    }

    @Testpublic void testDemain() {
        MyInner in = new MyInner();
        in.a = 9;
        change(in);
        System.out.println(in.a);
    }

}
Salin selepas log masuk

实际输出:1

执行过程同StringBuilder执行过程相同,这里不再赘述。下面对上面的代码做一点改动,如下:

public class MyInner {public int a;
}public class Test{public void change(MyInner in01) {
        in01=new MyInner();//使in01指向一个新的对象in01.a = 1;
    }

    @Testpublic void testDemain() {
        MyInner in = new MyInner();
        in.a = 9;
        change(in);
        System.out.println(in.a);
    }

}
Salin selepas log masuk
Salin selepas log masuk

实际输出:9

参数传递完成时,in01与in指向同一个对象,in01对对象的操作等同于in对对象的操作,接着在方法内部执行"in01=new MyInner();",这样in01就指向了一个新的对象,in01所有的操作都与in无关了:

综合以上的运行结果与分析,可知java参数传递方式符合值传递。

 三 引用传递

1.什么是引用传递?

将变量自身的内存地址传入方法中,方法中的变量指向方法外的变量,在方法中对变量的操作就是对方法外变量的操作

2.自定义类型

public class MyInner {public int a;
}public class Test{public void change(MyInner in01) {
        in01=new MyInner();//使in01指向一个新的对象in01.a = 1;
    }

    @Testpublic void testDemain() {
        MyInner in = new MyInner();
        in.a = 9;
        change(in);
        System.out.println(in.a);
    }

}
Salin selepas log masuk
Salin selepas log masuk

实际输出:9

如果采用引用传递,传递完成以后,in01指向in,对in01的操作就是对in的操作,in01指向对象2,那么in也指向对象2,输出1,与实际不符,所以不是采用引用传递

不再一一分析其他变量类型,分析后可以发现,java在传递参数时采用的不是引用传递,而是值传递。

简单讲,值传递时方法内外是两个拥有同一指向的变量,引用传递时方法内外是同一个变量。

Atas ialah kandungan terperinci 什么是参数传递?他有什么用?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP vs Python: Memahami Perbezaan PHP vs Python: Memahami Perbezaan Apr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Oct 13, 2024 pm 01:32 PM

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.

See all articles