A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2014-9-28 23:17  /  834 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  今天突然想到一个问题,Object类中有一个equals方法,我想知道这个方法比较的是什么东西?

5 个回复

正序浏览
其中有借助==这个符号的,比较,在不同的对象中对他进行了重写,所以得看对象
回复 使用道具 举报
对象的引用
回复 使用道具 举报
比较地址值(如果不被复写的情况下)
回复 使用道具 举报
这个根据不同类是有不同的,这个坎不同类的equal的写法,如果没有从谢equals方法的话,默认是比较内存地址
回复 使用道具 举报
本帖最后由 ζ_____________ 于 2014-9-28 23:42 编辑

首先 equals是建立在对象引用的基础上的, 也就是说 null对于 equals来说, 它就是一个非法值性质的东西, 所以遇到 null, equals就会返回 false..
为了验证之前的想法.
我们简单的个例子.

例子1:
                Object s1= null;
                Object s2 = null;
                System.out.println(s1.equals(s2));//NullPointerException





例子2:

public class Test
{
        public static void main(String[] args)
        {
                Object s1  = new Test();
                Object s2  = new Test();
                Object s3  = s1;
      System.out.println(s1.equals(s2));    //false
                System.out.println(s1.equals(s3));    //true
        }

}
        class Test
        {
        }



这就能看出来. 在Object中的equals方法比较的是两个对象的地址值.
啊啦~刚学基础啦,只能解释到这啦. 希望有用咯.


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马