传值和传引用

传值和传引用:传值:直接传基本类型数据;传引用(传地址):对象与对象之间传递值

int date = 9;
BirthDate d1 = new BirthDate(7, 7, 1970);
BirthDate d2 = new BirthDate(1, 1, 2000);

ex.change1(date);
ex.change2(d1);
ex.change3(d2);
System.out.println("date=" + date);// ?
System.out.println(d1);
System.out.println(d2);
}

public void change1(int i) {
i = 1234;
}

public void change2(BirthDate b) {
b = new BirthDate(22, 2, 2004);
}

public void change3(BirthDate b) {
b.setMonth(11);
}

执行输出结果是:date=9
7-7-1970
1-11-2000;
解析:对于第一个,是传值,所以,开始的时候date将值传给i=9;然后i又被重新赋值,i=1234,因此date的值不会发生变化。
对于第二个,传引用,开始b=d1;(b1的指针指向d1的对象)然后b被new了对象,指针放弃原来的对象,指向新的对象,然后给b赋值,没有改变d1里面的值;
对于第三个,传引用,开始b=d2;(b的指针指向d2的对象),然后开始设置b的值,因为现在b和d2指向的是同一个对象,所以,对象里的内容被改变。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值