Java值传递

public class Test {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		exchange(a, b);
		System.out.println("a="+a);
        System.out.println("b="+b);
	}
	public static void exchange(int a, int b) {
        int c = a;
        a = b;
        b = c;
    }
}

上面代码的运行结果是

a=10
b=20

当你定义a和b之后,将a和b带入函数时,会在栈中复制出a’和b’,然后进行计算。等计算完后,没有元素指向a’和b’之后,a’和b’被回收。所以a和b的值没有被改变。
在这里插入图片描述


public class Test {
	public static void main(String[] args) {
        Student a1 = new Student();
        Student b1 = new Student();
        a1.name = "张三";
        b1.name = "李四";
        exchange(a1, b1);
        System.out.println(a1);
        System.out.println(b1);
	}
    public static void exchange(Student a, Student b) {
        Student c = a;
        a = b;
        b = c;
    }
}

同理,Student c = a; a = b; b = c;只是把clone出来的a1’、b1’的值改变了,当没有元素指向a1’、b1’、c后,他们也会被回收,a1、b1的值没有被改变。
在这里插入图片描述

public class Test {
	public static void main(String[] args) {
        Student a1 = new Student();
        Student b1 = new Student();
        exchange1(a1,b1);
        System.out.println(a1);//张三3 李四4
        System.out.println(b1);//李四3 张三4
	}
    public static void exchange1(Student a, Student b) {
        Student c = new Student();
        c.name=a.name;
        a.name=b.name;
        b.name=c.name;
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值