当前位置:编程学习 > JAVA >>

Java中==与equals深度理解-写给java初学者

对于基本类型的变量,这两种比较没有区别,为什么对于引用类型的变量作比较时就可能
出现不一样的结果了呢?还记得C++中的指针吧?这就有点儿像深拷贝与浅拷贝,其实
Java中对象的引用就是一个指针,只不过Java语言本身不提供任何直接访问它的语法。
因为我们使用一个引用类型的变量时,总是在操作这个引用所指向的对象,而不能改变
它本身,即使这个变量去引用另一个对象,即可以理解为“常引用”。
    引用变量中存放的是对象在堆内存中的地址,这个地址称之为“引用变量的值”,运
   
算符“==”操作两个引用变量时,就是比较引用变量的值是否相等。所以即使两个对象的
值完全相同,也是堆中两块独立的区域,当然不相等。而equals此时就会通过它们的值指
向的地址分别得到这两个对象的值,然后拿两个值作比较。
    说白了,我们假设张三和李四长得很像(几乎一模一样,为了让你相信这是真的,我
假设他们是一个妈生的,而且有相同的习惯,长像,爱好,穿着...)
 “==”就是问:张三和李四是不是同一个人?
 “equals”就是问:张三和李四长得一样吗?
   路过的初学者们,懂了吗?如果你们还没懂,怪张三和李四去吧...呵呵
如果真的懂了,就感谢张三和李四两位上知绯文下知歪理的大神了,什么纠缠的事都要找它,嗨!
 
本文出自 “随机所欲” 博客

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,