码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA——赋值指派中的别名现象

时间:2020-05-08 15:58:29      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:bsp   独立   清除   reference   原来   但我   关于   影响   nbsp   

     记于大二,学到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——赋值指派中的别名现象

标签:bsp   独立   清除   reference   原来   但我   关于   影响   nbsp   

原文地址:https://www.cnblogs.com/yycjavastudy/p/12850846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!