我的第一篇博客,谈谈java的值传递

本文探讨了Java中方法传参的概念,纠正了关于引用传递的误解,并通过实例验证了基本类型传递值,引用类型传递引用值的原理。通过代码示例,清晰展示了不同类型的变量在方法调用过程中的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的第一篇博客,还是个小菜鸟,欢迎老鸟们指教。
虽然工作两年了,但是每天忙忙碌碌,碌碌无为。于是是时候梳理一下了,java的一些基本知识自己还不是很理解,这两天在看相关方面的文章。今天又学到一一点东西,特地写下来,分享给自己,也分享给和我一样不知道的小鸟们。
那么咱们就来谈谈java的方法传参是引用传递,还是值传递?我以前的回答必须是引用传递,因为我就这么干过:

public static void swapObj(User user){
      //通过一些列方法获得user的其他信息,然后set给传进来的user
           user.setId(123);
           user.setUserAge("18");
       }

public static void main(String[] args) {

    User user = new User();
    user.setUserName("小郭");
    swapObj(user);
    System.out.println(user.getUserName());
    System.out.println(user.getUserAge());
    System.out.println(user.getId());

}

输出结果:
小郭
18
132

我就是根据这个认为引用传递的,但是我发现我错了因为又有一段代码:

public static void swapInt(int b){
        b=5;
    }

public static void main(String[] args) {

int a =6;
swapInt(a);
System.out.println(a);
}

输出结果:
6
于是我就纠结的,这明显传递的不是引用啊,传递的是值啊。经过看了几篇文章,觉得应该这么理解,它是值传递,基本类型的话传递值,引用的话传递引用的值,也就是说这个引用被传进里面了,但是引用不会被改变,写个代码来验证一下:

public static void swapObj(User user) {
    User user2 = new User();
    user2.setUserName("小李");
    user = user2;
}
public static void main(String[] args) {

    User user = new User();
    user.setUserName("小郭");
    swapObj(user);
    System.out.println(user.getUserName());

}

输出结果:小郭
这个结果证明了我的推论,即在调用方法的时候将引用值传递到了方法里面,然而,这个引用的值改变对于方法外面是没有影响的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值