JAVA是引用传递还是值传递
我们先不上结论,接下来一点点推导:
public static void main(String[] args) { SpringApplication.run(Main.class, args); log.info("项目启动成功"); int a=1; add(a); log.info("a:{}",a); } public static void add(int param){
param++;
}
上面这是非常简单的一段代码,这里要先了解下接收参数和实际参数的区别,param就是接收参数,而a则是实际参数;
通过控制台打印出a值其实就已经可以判断java底层究竟是值传递(重新拷贝一份参数,原参数不改变)还是引用传递了,如果a的值改变那就是引用传递,如果a的值不变,那就是值传递;
通过打印可以看到,a的值不变,说明底层是值传递;
其实,java是引用传递还是值传递这个问题从JMM(Java内存模型)就可以看出来:
Java内存模型规定,将所有的变量都存放在 主内存 中,当线程使⽤变量时,会把主内存⾥⾯的变量 复制 到⾃⼰的⼯作空间或者叫作 私有内存 ,线程读写变量时操作的是⾃⼰⼯作内存中的变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix