一、Java基础_入门-9.3_值传递&引用传递 详解
1、关于值传递
值传递:是指在调用函数时,将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,就不会影响到实际参数
如下图所示,当传递参数之前会将参数进行复制,函数中修改了参数,不会影响实际参数
值传递是对于是对基本数据而言,例如下面例子,number没有改变。
public class Test01 {
public static void main(String[] args) {
int number = 10; new Test01().change(number);
System.out.println(number);
}
public void change(int a){
a+=1;
}
}

2、关于引用传递
引用传递:是指在调用函数时,将实际参数的地址传递到函数中,那么在函数中对参数进行修改,将会影响到实际参数
引用数据类型分为两个部分,引用变量和对象,这两个部分放在不同的地方,引用变量在栈中,而对象是放在堆内存中的,引用变量指向对象。 如下图所示,当传递参数之前会将参数进行复制,但是复制的是引用变量,复制后的引用变量还是指向内存中的同一对象,所以引用传递中,函数修改了参数会影响实际参数
引用传递是对于引用数据类型而言,例如对于User类姓名的修改,会改变对象的name。
public class Test01 {
public static void main(String[] args) {
User user = new User("小明", 12);
new Test01().change(user);
System.out.println(user);
}
public void change(User a){
a.setName("小张");
}
}
注意点,引用类型中的String的值是放在常量池中,我们改变副本的值不会影响到原来的值。
例如在change放发中改变了副本的值,但是原来的str字符串不会改变。
public class Test01 {
public static void main(String[] args) {
String str = "hello";
new Test01().change(str);
System.out.println(str);
}
public void change(String a){
a="yes";
}
}
原文链接:https://mbd.baidu.com/ug_share/mbox/4a81af9963/share?tk=e2f18815ac941a56b643afa789e393f4&share_url=https%3A%2F%2Fyebd1h.smartapps.cn%2Fpages%2Fblog%2Findex%3FblogId%3D109373902%26_swebfr%3D1%26_swebFromHost%3Dbaiduboxapp&qq-pf-to=pcqq.c2c
分类:
一、Java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现