JAVA——赋值指派中的别名现象
Posted yycjavastudy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——赋值指派中的别名现象相关的知识,希望对你有一定的参考价值。
记于大二,学到springsecurity,回头打牢下基础。
关于Java的 “=” 是有一些有趣的事情的,先摆出一个程序运行结果:
第一行的输出简单赋值没什么问题,最基本的嘛,第二行,在所有语言使用者看来也没有问题,将m的值赋给n嘛。
但是到了第三行,为什么n.i的值也变了???变量之间不应该独立互不影响嘛。。。
原来所谓的m,n操作时,我们操作的是reference,第二个赋值的时候,n和m其实是指向了一块地方!而原来的reference将会被GC自动清除,这个就是——Java的别名现象
那么我就是想让他们独立呢,可以改用n.i=m.i这种写法。
而在方法调用中,也存在别名机制,如下是从别的博客借鉴来的(懒得写这一段了。。。)
最后,对于这样一段代码:
Person p1 = new Person("Wells" , 20);
Person p2 = p1;
毫无疑问,对对象进行操作时,会发生别名现象,但我们有时候并不希望这样。
解决方法如下:
在Java的中有接口Cloneable,实现它方法clone()。然后将 Person p2 = p1替换成Person p2 = p1.clone()即可
以上是关于JAVA——赋值指派中的别名现象的主要内容,如果未能解决你的问题,请参考以下文章
指派问题基于matlab遗传算法求解指派优化问题含Matlab源码 2292期