null是空对象如果xxx是对象而且是null的话,返回true,否则返回false
如果xxx是基本类型的话,xxx.equals(null)会出现编译错误,xxx == null 会出现运行异常

解决方案 »

  1.   

    xxx.equals(null)判断xxx的内容是否等于null的内容
    xxx == null 判断xxx是否等于空值
      

  2.   

    CJMaster(Master): 对于null来说会有什么不同?判断的结果会有不同吗?
      

  3.   

    equals比较的是实体内容,==比较的对象的引用
    是不一样的
      

  4.   

    xxx.equals(null)和xxx == null
    区别就是,如果程序能正常运行下去的话
    xxx.equals(null)一定只能返回false
    xxx == null可能返回true,也可能返回false因为如果xxx是null的话
    xxx.equals(null)会抛出NullPointerException
    xxx == null返回true如果xxx不是null的话......
      

  5.   

    如果XXX是Object的话,用equals方法的话,如果其中参数为空,那么肯定返回false,如果XXX不是OBJECT,那么就没有equals方法
      

  6.   

    晕啊,
    这个问题根本就不成立哈.
    请问大家会哪个猪头会写 XX.equal(null)?
    明摆着就算有XX是null,肯定是出NullPointException.
      

  7.   

    呵呵,是的,对null做引用当然会报NullPointException,要不就是返回一定为false
      

  8.   

    用”==“测试两个基本类型是否相等,或指向同一个对象。用“equals ”方法测试两个对象是否相等。JAVA 提供了对象,基本类型,和相等性三个观念,这三个要素是进行class设计的基础。Practical Java
      

  9.   

    详细请看Practical Java 中文版,对JAVA的相等性阐述相当明白 
      

  10.   

    equals()比较二者内容是否相等,==比较二者是否为同一引用,即指向二者的指针是否相等,说白了就是判断二者是不是同一个东西。equals()是类的方法,调用它必然要引用对象,如果XXX的值为null,必然会抛异常;如果XXX的值不为null,此方法返回false,也就是说不可能返回true。
    用==判断的话分两种情况:如果两个操作数是基本类型,那么没什么新鲜的,跟c一样,就是1等于1、2等于2的问题;如果两个操作数是对象,那么一定当两个对象是同一个,才会返回true,否则即使二者的内容一样,指向它们的指针未必相等,也就不一定返回true。具体到这个问题,结论是:equals方法恒为false,双等号有可能返回true。
      

  11.   

    equals 也可能返回 true 的,比如某个人写了这样一个类public class MyClass {
        public boolean equals(Object obj) {
            if (obj == null) return true;
            else if (obj instanceof MyClass) return true;
            else return false;
        }
    }不要说我极端,这种可能并不是没有。
    所以,equals(null) 到底返回什么,得相比较的类的实现。不能武断的说一定为 false.
      

  12.   

    equals方法有什么功能只有定义类的用户自己知道,所以上面的关于equals功能的讨论都是没有道理的。
      

  13.   

    支持 jamesfancy()边城狂人(James Fancy) ,他对于xxx.equals(null)的解释很确切
    同时支持flyforlove(为情飞) ,他对xxx.equals(null)的原理说得很好。
    至于xxx == null 是判断该引用是否是否为空对象,一般情况,定义对象是通常为:
    Object xxx=null;
    然后赋值
    xxx = new Object();
      

  14.   

    equals(Object o)是自己写的,Object 内默认为:public boolean equals(Object obj) {
        return (this == obj);
    }来自java源码.src.zip
      

  15.   

    happyegg(想转型的程序员) 说的是对的。
    即使程序写得像jamesfancy()边城狂人(James Fancy) 这样,XXX为空时也同样是抛出NullPointerException.你想相,是这样的:
    MyClass XXX = null;
    XXX.equals(Oobj);当然是一个异常。
      

  16.   

    public boolean test(Object xxx) {
      return xxx.equals(null) == (xxx == null);
    }test永远不可能返回true(前提是equals的写法,符合那几条规则):P