java引用传递_java的引用传递

今天看一个代码,看来看去还是觉得不太习惯,所以写一下助于记忆

一个 dog类。里面有name,age属性

一个类改变属性

public class A {

public void changeDog(Dog dog){

Dog dog2=dog;

dog2.setAge("ageA");

dog2.setName("nameA");

}

}

一个类创建,主类

public class B {

public static void main(String[] args) {

Dog dog=new Dog();

dog.setName("nameB");

dog.setAge("ageB");

A a=new A();

a.changeDog(dog);

System.out.println(dog.toString());

}

}

这里在B中创建了一个dog,设置了属性带B属性。然后在A类中使用新的引用dog2也是指向同一块内存。这里其实就是有两个引用指向一个内存了。然后后面是A类中进行了属性的修改,组后输出的是带A类属性的dog。

这里必须要明白,两个修改的都是那一块内存中的dog。但是是通过两个不同的引用来完成的。所以我刚开始看的时候有些不习惯,仔细分析一遍才感觉其实就那样。

感觉之前写的何柄融:java的函数传参 值传递?地址传递?​zhuanlan.zhihu.comzhihu-card-default.svg

这篇文章中的还稍微复杂些。 还涉及到栈帧有效性之类的。

代码中这样写还是有相应的好处的。这样写是在存数据库的时候,在一次事务中,不进行多次查询和更改一个表,这样会让乐观锁报错。因为如果每次修改完都直接存入数据库,那么在一次事务中两次这样的操作就会报问题。所以是先统一进行修改,最后再存入数据库。 我也不是很懂,感觉后面遇到问题再说吧,这里留个记忆提个醒,情况不同,处理方式不同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值