JAVA:方法传参机制
2021/10/14 17:16:24
本文主要是介绍JAVA:方法传参机制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
结论一:基本数据类型传递的是值(值的拷贝),形参的任何改变不影响实参
例如:源代码
public class HI{ public static void main(String[] args) { int a=10; int b=20; AA c=new AA(); c.exchange(a,b); //实参基本数据类型a和b的值10和20分别拷贝给形参 System.out.println("main方法中的值a="+a+" b="+b); //输出a=10,b=20. } } class AA{ public void exchange(int a,int b){ //接收到实参拷贝的a和b的值 int tmp=a; a=b; b=tmp; //形参中a,b值的改变不影响实参中a和b的值的改变 System.out.println("交换后的值a="+a+" b="+b); //输出a=20,b=10 } }
结论二:引用数据类型传递的是地址(传递的也是值,但是这个值是地址),可以通过改变存放在堆内存中的数据类型进而根本性的影响到实参的值(因为这时实参和形参的数据类型引用的都是堆内存中的数据值),可以通过形参影响实参。
例如:源代码
public class HI{ public static void main(String[] args){ person p=new person(); //堆内存创建一个person对象,栈内存有对象引用p存放person对象的地址。 B b=new B(); //堆内存创建一个B对象,栈内存存有对象引用b存放指向B的地址 p.age=10; //栈内存的p通过地址找到堆内存中的person对象初始化它的age值 p.name="小明"; b.c(p); //将main方法中的p实参指向堆内存person的地址传给B类的c方法中 System.out.println("小明的年龄age="+age); } } class person{ String name; int age; } class B{ public void c(person p){ //接收到指向堆内存person对象的地址 p.age=100; //通过地址找到person对象中的age修改其值为100 } }
public class HI{ public static void main(String[] args){ Person p=new Person(); //在堆内存创建一个Person类的对象p1(p1是对这个对象的称呼) p.age=10; //将p1对象中的age基本数据类型改为10 p.name="tom"; //将p1对象中指向方法区中的常量池中的name引用变量改为tom A c=new A(); //在堆内存中创建一个A类的对象c1 c.a(p); //将p对象的地址实参传给A类的a方法接收 System.out.println(p.age); //输出p1对象的age的值 } } class Person{ String name; int age; } class A{ public void a(Person p) //接收Person类的p对象地址 { p=new Person(); //在堆内存中创建一个Person类的p2对象(注意这里的p2对象不是p1对象,但是他们都是Person类) p.age=100; //将p2对象的age改为100(p1对象的age还是10不变) p.name="Jack"; //将p2对象的name改为Jack(p1对象的name还是tom没变) } }
这篇关于JAVA:方法传参机制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南