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内存模型规定,将所有的变量都存放在 主内存 中,当线程使⽤变量时,会把主内存⾥⾯的变量 复制 到⾃⼰的⼯作空间或者叫作 私有内存 ,线程读写变量时操作的是⾃⼰⼯作内存中的变量。

posted @   HexThinking  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示