JAVA中对象赋值以及前拷贝,深拷贝等~~

今天在把 VLC 的代码转成 JAVA的过程中,遇到了一个让我困惑的问题

 

对象间的赋值到底是怎样的

 

就以前我的了解,JAVA的参数传递看似是引用传递,其实也是值传递,是把对象的地址拷贝后赋给 函数的参数,例如

void set(object a1){

  a1.set("  hello");

  a1=new Object(" world");

}

在这里原来的对象只执行了第一布,而第二步没有执行。因为new 命令把新的地址给了a1,a1和函数的传入参数的地址已经彻底没有关系了。

另外,JAVA中的对象赋值都是浅拷贝,也就是两个对象共同拥有同一个值,一个对象改变了这个值另外一个对象也会跟着改变。

如果要进行深拷贝,在C++中是重载运算符“=”,拷贝构造函数和clone方法。

具体可参照clone方法~

转载于:https://www.cnblogs.com/Xiegg/p/3621054.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值