最近调试java程序中遇到的一个问题,说出来和大家分享一下。
Java 中,
equals是比较不同的两个对象的值是不是相等。
==是比较 想同的两个对象的值是不是相等。
这个大家都知道的,正因为这样,在java中比较时用equals更能表达你的意愿,毕竟大多数时候你是想知道两个对象的value是不是相等的。但有个例外,null,判断一个object是不是null时就只能用==而不能用equals。追踪到java API 文档后才知道,o.equals(null) == true 任何时间都不成立。

解决方案 »

  1.   


    ==是比较内存地址是否相同,或者说引用的对象是否是同一个,复制的就是另外一个了。
    equals是提供的方法,怎么返回结果是由类本身决定的
      

  2.   

    Object 不能用equals的原因并不是o.equals(null)永远为false,而是因为equals是Object的方法,Object不存在,何来的方法
      

  3.   


      这里的Object是general意义上的,比如String name=null;这时name就是个object.