当前位置: 代码迷 >> J2SE >> 关于java中== 跟 equals的区别,理解对吗
  详细解决方案

关于java中== 跟 equals的区别,理解对吗

热度:141   发布时间:2016-04-23 19:48:26.0
关于java中== 和 equals的区别,理解对吗
== 可用于基本数据类型和引用数据类型
用于基本数据类型时判断两个值是否相等。
用于引用数据类型时判定两个引用是否指向同一个对象
equals()只能用于引用数据类型
作用和 == 相同,都是判定两个引用是否指向同一个对象
※例外:对于File,String,Date和包装器来说,判定是否为同一类型和内容是否相同,而不是判定是否指向同一个对象。
------解决思路----------------------
== 就是等号,比较值的,2个引用的直接比较其实就是其内的对象地址比较,也就是是否指向同一个对象,很直观
equals()是Object的方法,也就是所有对象都有这个方法,如果你不重写,其实现是这样的

 public boolean equals(Object obj) {
        return (this == obj);
    }


不同类会覆盖这个方法,你也可以实现你自己的比较方法
一般都会覆盖该方法
你说的那几个不是特列,而是都自己实现了该equals()
------解决思路----------------------
equals通常是用于比较两个对象的内容是否相同,而不是判断两个引用类型的变量是否引用同一对象。
------解决思路----------------------
equals就是个方法,你想让它怎么相等就怎么相等。

------解决思路----------------------
对的,但是例外不用那么记。
基本上所有的类都会重写equals方法,实现自己的相等算法。大部分时候用equals方法是比较高的。
------解决思路----------------------
有点区别把。String重写了equals方法,源码大概是先调用了super(),如果不返回true,再判断字符串从第一个开始每个字符一一对比,当且仅当长度跟每个位置的字符都一样时,也返回true。
------解决思路----------------------
equals大都最后还是用了==来比较,你可以看看equals方法的实现,可以更好的理解分辨它们
  相关解决方案