设为首页 加入收藏

TOP

Java中“equals"和"==”的区别
2014-11-24 02:38:48 来源: 作者: 【 】 浏览:4
Tags:Java equals 区别

一句话概括:==比较的是两个对象的引用(即内存地址)是否相等,而equals()比较的是两个对象的值(即内存地址里存放的值)是否相等。当然equals()在个别类中被重写了那就例外了。


详细论述:eqauls 与 = =之异同


1)比较方式角度:


= =是面向过程的操作符;equals是面向对象的操作符


= =不属于任何类,equals则是任何类(在Java中)的一个方法;


我们可以1)Primitive1 (基本类型)= = Primitive2(基本类型);


2)Object Reference1(对象引用)= = Object Reference2(对象引用)


3)Object Reference1 (对象引用) .equals(Object Reference2 (对象引用))


这三种比较


但却不能Primitive1 (基本类型).equals( Primitive2(基本类型));


对于基本类型,没有面向对象中发送消息一说,自然也不会有


方法成员。


2)比较目的角度:


1) 如果要比较两个基本类型是否相等,请用= =;


2) 如果要比较两个对象引用是否相等,请用= =;


3) 如果要比较两个对象(逻辑上)是否一致,请用equals;


对两个对象(逻辑上)是否一致的阐释:


有人会问:在C++中, 比较两个对象相等不是也可以用==吗?我知道您是指运算符重载,但是很遗憾,Java中不支持运算符重载(java中亦有重载过运算符,他们是“+”,“+=”,不过也仅此两个,而且是内置实现的);所以,对象的是否相等的比较这份责任就交由 equals()来实现 。


这个“逻辑上”其实就取决于人类的看法,实际开发中,就取决于用户的需求;


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JAVA反射和CLASS类 下一篇Ubuntu下编译Linux-xen的问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: