xxx.equals(null)和xxx == null 的区别

whyy0 2004-09-23 04:32:57
同上
我只问空的这种情况,别的情况不用解释,谢谢
...全文
5674 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2004-09-25
  • 打赏
  • 举报
回复
public boolean test(Object xxx) {
return xxx.equals(null) == (xxx == null);
}

test永远不可能返回true(前提是equals的写法,符合那几条规则)

:P
Tasia 2004-09-25
  • 打赏
  • 举报
回复
happyegg(想转型的程序员) 说的是对的。
即使程序写得像jamesfancy()边城狂人(James Fancy) 这样,XXX为空时也同样是抛出NullPointerException.

你想相,是这样的:
MyClass XXX = null;
XXX.equals(Oobj);

当然是一个异常。
dyhml 2004-09-25
  • 打赏
  • 举报
回复
equals(Object o)是自己写的,

Object 内默认为:

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

来自java源码.src.zip
gadagada 2004-09-24
  • 打赏
  • 举报
回复 1
晕啊,
这个问题根本就不成立哈.
请问大家会哪个猪头会写 XX.equal(null)?
明摆着就算有XX是null,肯定是出NullPointException.
xueqs 2004-09-24
  • 打赏
  • 举报
回复
up
dlxu 2004-09-24
  • 打赏
  • 举报
回复
如果XXX是Object的话,用equals方法的话,如果其中参数为空,那么肯定返回false,如果XXX不是OBJECT,那么就没有equals方法
baffling 2004-09-24
  • 打赏
  • 举报
回复
同意happyegg的说法!
beakham 2004-09-24
  • 打赏
  • 举报
回复
同意happyegg的说法!
happyegg 2004-09-24
  • 打赏
  • 举报
回复
xxx.equals(null)和xxx == null
区别就是,如果程序能正常运行下去的话
xxx.equals(null)一定只能返回false
xxx == null可能返回true,也可能返回false

因为如果xxx是null的话
xxx.equals(null)会抛出NullPointerException
xxx == null返回true

如果xxx不是null的话......
vongood 2004-09-24
  • 打赏
  • 举报
回复
对于null,是一样的吧。
易点互联 2004-09-24
  • 打赏
  • 举报
回复
equals比较的是实体内容,==比较的对象的引用
是不一样的
whyy0 2004-09-24
  • 打赏
  • 举报
回复
CJMaster(Master): 对于null来说会有什么不同?判断的结果会有不同吗?
liudongbaollz 2004-09-24
  • 打赏
  • 举报
回复
支持 jamesfancy()边城狂人(James Fancy) ,他对于xxx.equals(null)的解释很确切
同时支持flyforlove(为情飞) ,他对xxx.equals(null)的原理说得很好。
至于xxx == null 是判断该引用是否是否为空对象,一般情况,定义对象是通常为:
Object xxx=null;
然后赋值
xxx = new Object();
flyforlove 2004-09-24
  • 打赏
  • 举报
回复
equals方法有什么功能只有定义类的用户自己知道,

所以上面的关于equals功能的讨论都是没有道理的。
边城狂人 2004-09-24
  • 打赏
  • 举报
回复
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.
sabbathsabbath 2004-09-24
  • 打赏
  • 举报
回复
equals()比较二者内容是否相等,==比较二者是否为同一引用,即指向二者的指针是否相等,说白了就是判断二者是不是同一个东西。

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

具体到这个问题,结论是:equals方法恒为false,双等号有可能返回true。
RaistlinYu 2004-09-24
  • 打赏
  • 举报
回复
楼主是钻牛角尖了,其实他对equals和==是很了解的,他只是在考虑null这种特殊情况而已
sylmoon 2004-09-24
  • 打赏
  • 举报
回复
详细请看Practical Java 中文版,对JAVA的相等性阐述相当明白


sylmoon 2004-09-24
  • 打赏
  • 举报
回复
用”==“测试两个基本类型是否相等,或指向同一个对象。用“equals ”方法测试两个对象是否相等。JAVA 提供了对象,基本类型,和相等性三个观念,这三个要素是进行class设计的基础。

Practical Java
hyhu 2004-09-24
  • 打赏
  • 举报
回复
呵呵,是的,对null做引用当然会报NullPointException,要不就是返回一定为false
加载更多回复(2)

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧