Java是值传递
一、定义
值传递:当⼀个参数按照值的⽅式在两个⽅法之间传递时,调⽤者和被调⽤者其实是⽤的两个不同的变量——被调⽤者中的变量(原始值)是调⽤者中变量的⼀份拷⻉,对它们当中的任何⼀个变量修改都不会影响到另外⼀个变量。
引用传递:当⼀个参数按照引⽤传递的⽅式在两个⽅法之间传递时,调⽤者和被调⽤者其实⽤的是同⼀个变量,当该变量被修改时,双⽅都是可⻅的。
二、举例
值类型:
public static void main(String[] args) { int i = 5; f(i); System.out.println("i = " + i); } public static void f(int j) { j = 10; }
调用函数 f() 时,会将 main 中 形参 i 的值赋值给形参 j。这是两个不同的变量,对变量 j 的操作不会影响变量 i
引用类型:
public static void main(String[] args) { String name = "张三"; f(name); System.out.println("name = " + name); } public static void f(String name) { name = "李四"; }
由于name是引用类型,name中保存的值是一个地址,调用函数 f() 时,会将这个地址传给形参 name,之后形参 name 中会保存字符串 "李四" 的地址,形参 name 的地址没有改变,输出的自然是张三了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?