JAVA中函数调用只有值传递

为什么说JAVA只有值传递呢?如下代码

public class TestSwap {
    public static void main(String... args){
        Student1 s1 = new Student1(20,"小周");
        Student1 s2 = new Student1(13,"瑞瑞");
        TestSwap swap = new TestSwap();
        swap.swap(s1,s2);
//        swap.swap1(s1,s2);
        System.out.println("s1:"+s1.getName());
        System.out.println("s2:"+s2.getName());
    }

    private void swap(Student1 x, Student1 y){
        Student1 temp = x;
        x = y;
        y = temp;
        System.out.println("x:"+x.getName());
        System.out.println("y:"+y.getName());
    }
    private void swap1(Student1 x, Student1 y){
        String temp = x.getName();
        x.name = y.getName();
        y.name = temp;
        System.out.println("x:"+x.getName());
        System.out.println("y:"+y.getName());
    }

    public static class Student1{
        int age;
        String name;

        public Student1(){

        }
        public Student1(int age, String name) {
            this.age = age;
            this.name = name;
        }

        public String getName() {
            return name;
        }
    }
}
调用swap的输出结果x:瑞瑞 ,y:小周 , s1:小周 , s2:瑞瑞
调用swap1的输出结果x:瑞瑞 ,y:小周 ,s1:瑞瑞 ,s2:小周

以上输出结果说明

  • 一个方法可以改变一个对象参数的状态。(swap1方法可以让Student对象的name调换)
  • 一个方法不能让对象参数引用一个新的对象。(swap方法不可以让一个对象引用指向另一个对象)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值