A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jialihong 中级黑马   /  2013-7-25 18:38  /  1536 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-25 23:21 编辑

基本数据类型用"=="判断,其他类型要用equals判断,这句话应该是正确的吧?

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

7 个回复

倒序浏览
在比较时先调用hashCode方法,如果不相同,证明不相等。
如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。

==:主要用在基本数据类型及引用
Equals:主要是对象或对象引用的比较。

集合中是否包含某一个元素用contains来判断。

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
对于引用数据类型,如果没有复写equals方法的话,就会调用Object中的equals方法,而Object类中equals方法底层调用的是==
回复 使用道具 举报
= =是面向过程的操作符;equals是面向对象的操作符

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

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

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

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

这三种比较但却不能   Primitive1 (基本类型).equals( Primitive2(基本类型));

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

方法成员。

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
我觉得可以这么记:==必须内存地址相等,equals()判断值相等。简单易记!

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
我都知道 你为什么 会问这个问题 .  哈哈.   
因为 毕老师在 视频里 .  比较的年龄 全部用的 ==   .  但是 比较名字 字符串的时候用的是equals.
这样做.  只有一个原因..  因为 ==  好写!!! ..  .
==比较 地址值 这些 大家 都知道.    可是 明显  int i=1    和 int j=1   
这明显是两个对象啊 . 如果真的比较地址值肯定是假啊!
是因为.  在JAVA中.  当一个对象在初始化时, 如果达不到一个字符的长度.  那么 就不会创建新的对象.    也就是长度在btye之内.  都是同一个对象. -128 至127之间
如果是int i=128  int j=128   .  这样 用 i==j  的话 返回的 就是假 .         

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
不一定的,在object类中的equals方法就就是当且仅当要比较的两个引用指向同一个对象时才返回真,但在String类中就复写了equals方法,用于两个引用比较内容是否相等。例如当对象要放入集合HashSet时就必须要复写equals方法了。"基本数据类型用"=="判断,其他类型要用equals判断",其实没有那么绝对的,主要是看你想实现什么功能。
回复 使用道具 举报
本帖最后由 张亚军 于 2013-7-25 21:13 编辑

     ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

     如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

     equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

     String a=new String("AAA");

     String b=new String("AAA");

     System。out.println(a==b);//这个是比较内存地址即栈内存的值是否相等,开辟了2个内存空间,所以地址逼向等结果为false     System。out.println(a.equals(b)); //这是比较堆内存中的实例对象,new出来的对象都是AAA,所以相等,结果为true
     

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马