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

      对于基本类型的变量,这两种比较没有区别,为什么对于引用类型的变量作比较时就可能

出现不一样的结果了呢?还记得C++中的指针吧?这就有点儿像深拷贝与浅拷贝,其实

Java中对象的引用就是一个指针,只不过Java语言本身不提供任何直接访问它的语法。

因为我们使用一个引用类型的变量时,总是在操作这个引用所指向的对象,而不能改变

它本身,即使这个变量去引用另一个对象,即可以理解为“常引用”。

    引用变量中存放的是对象在堆内存中的地址,这个地址称之为“引用变量的值”,运
   
算符“==”操作两个引用变量时,就是比较引用变量的值是否相等。所以即使两个对象的

值完全相同,也是堆中两块独立的区域,当然不相等。而equals此时就会通过它们的值指

向的地址分别得到这两个对象的值,然后拿两个值作比较。

    说白了,我们假设张三和李四长得很像(几乎一模一样,为了让你相信这是真的,我

假设他们是一个妈生的,而且有相同的习惯,长像,爱好,穿着...)

 “==”就是问:张三和李四是不是同一个人?
 “equals”就是问:张三和李四长得一样吗?

   路过的初学者们,懂了吗?如果你们还没懂,怪张三和李四去吧...呵呵

如果真的懂了,就感谢张三和李四两位上知绯文下知歪理的大神了,什么纠缠的事都要找它,嗨!

 

你可能感兴趣的:(java,职场,equals,休闲)