!=null和equals的区别

首先你要先明白它们分别的作用是什么: 
object.equals(null),“equals()”方法是比较“值”是否相等; 
object==null,“==”比较运算符是用来比较“对象”是否是同一个。 

说的简单一点java是面向对象的编程语言: 
如果new了一个对象,那么它就有值,它的值可以是“null”; 
如果根本就没有new这个对象,那它就不存在,没有办法进行比较,就会出现空指针的异常。 

说的有些模棱两可,给你举个例子: 
Object object1=new Object(); 
Object object2=new Object(); 
Object object3; 

object1.equals(object2);//这是true 
object1==object2;//未必是true 
object3==object2 ;//就要报错,因为object3还未开辟内存,object2不知道指向谁取进行比较。 

也就是说,每次new一个对象都是新开辟一块内存,它们分别站在不同的位置上进行比较,equals是比较他们的值,而==相当于比较它们的位置! 
 
 
 
 
object==null判断object是不是被分配了内存空间;假如object没有被分配内存空间,即object==null,object.equals(null)将会抛出NullPointerException,没有被分配内存空间的对象是不能调用任何方法的。 
另外谈谈==和equals(). 
前者比较的是两个对象的内存地址是否一样,判断两者是不是同一对象;后者比较的是具体的“值”是否一样,如"aaa".equals("aaa")就是true。 
而且对于自己定义的类,如果要实现equals()的上述功能,还要重写Object类的equals()方法,它默认的是用"=="来作比较,上面的String类已经重写了该方法,所以可以拿来直接用。 
请恕我直言, “0神龙之首0”回答得很好,但他“object1.equals(object2);//这是true ”这句话是错的,它的结果是false,原因就是object的equals()方法默认是用“==”来做比较,object1和object2显然不是同一对象。
  
是一样的,不过要注意声明的位置: 如果声明为类的属性则没有问题,如果是在方法体内声明的,则一定要给它赋初值,即使是null, 如String a=null,否则不会初始化,而且无法调用.
转自:http://zhidao.baidu.com/question/80608165.html

转载于:https://www.cnblogs.com/tgxblue/archive/2013/03/26/4217396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值