Java的值传递
1. 形参和实参#
- 实参(实际参数) :用于传递给函数/方法的参数,必须有确定的值。
- 形参(形式参数) :用于定义函数/方法,接收实参,不需要有确定的值
2. 值传递和引用传递#
- 值传递 :方法接收的是实参值的拷贝,会创建副本。
- 引用传递 :方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参
3. Java的值传递#
/*
用于说明java是值传递
*/
public static void main(String[] args) {
int a = 0;
System.out.println(a);
method1(a);
System.out.println(a);
User zhangsan = new User("zhangsan");
User lisi = new User("lisi");
method2(zhangsan, lisi);
System.out.println("zhangsan:"+zhangsan.getName());
System.out.println("lisi:"+lisi.getName());
}
//传递基本数据类型
public static void method1(int num){
num = 1;
System.out.println("num:"+num);
}
//传递引用数据类型
public static void method2(User person1, User person2){
User person3 = person1;
person1 = person2;
person2 = person3;
System.out.println("person1:"+person1.getName());
System.out.println("person2:"+person2.getName());
}
运行结果:
0
num:1
0
person1:lisi
person2:zhangsan
zhangsan:zhangsan
lisi:lisi
4. 结论#
1. 在传递基本数据类型时,明显时值传递,形参会创建副本,对形参的操作,都是在这个副本上进行的
2. 在传递引用数据类型时,我们会错误的认为是引用传递,但其实依旧是值传递,只不过传递的是实参的地址罢了
在上面的例子中,形参只是把里面地址的值换了,并没有影响实参,可见是值传递;实参指向的还是那个空间地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!