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——赋值指派中的别名现象的主要内容,如果未能解决你的问题,请参考以下文章

一个bug在redmine中的诞生到终结

运筹学整数规划 ( 整数规划求解方法 | 指派问题 )

指派问题基于matlab遗传算法求解指派优化问题含Matlab源码 2292期

指派问题基于matlab遗传算法求解指派优化问题含Matlab源码 2292期

matlab求解指派问题

Java 编程 如果我要电脑指派一个随机的用户名(英文数字皆可) 该怎么写