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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xinchi 中级黑马   /  2015-9-21 22:13  /  823 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

‘==’和equals有什么区别?

11 个回复

倒序浏览
==是运算符,判断两个数据是否相等,或者判断对象是否是同一个.
equals是方法,判断两个对象的hashcode值是否相同,很多类里都会重写该方法,用来判断两个对象的属性是否相同
回复 使用道具 举报
我也想知道这个问题的答案
回复 使用道具 举报
1楼正解  不过目前我还没有遇到用equals的地方
回复 使用道具 举报
==用来判断数据是否相等,equal可以用来判断字符串是否相同,其他功能我还不知道
回复 使用道具 举报
天涯莫名 发表于 2015-9-21 22:35
==是运算符,判断两个数据是否相等,或者判断对象是否是同一个.
equals是方法,判断两个对象的hashcode值是否 ...

哇,好厉害啊,解析的太全面了
回复 使用道具 举报
1楼回复的很详细,也很专业!!!
回复 使用道具 举报
一般来讲:
1.==  比较的是地址吧
2.equals比较的是内容,大概是这样。

总之:
==比较的是地址是没问题的。(Java没有运算符重载)
equals到底根据什么判断两者相同是可以自定义的,比如字符串的equals比较的是两者的字符序列相同

当然你也可以给自定义的对象加上自定义的eqauls判断方法,如下:
  1. public class person {
  2.   String name;
  3.   int age;

  4.   public String getName(){
  5.     return name;
  6.    }

  7.   public int getAge(){
  8.     return age;
  9.    }


  10.   public person(sting name, int age){
  11.     this.name = name;
  12.   this.age = age;
  13.   }



  14.   public boolean equals(object obj){
  15.     if (!obj instance of Person){
  16.      return  false;
  17.     }
  18.    Person person =  (Object)obj;
  19.    return person.getName().equals(this.name) && person.getAge() == this.get;

  20.   }
  21. }
复制代码


回复 使用道具 举报
一个是判断值,一个是判断地址
回复 使用道具 举报
==比较的是地址值。equals如果没有被重写的话也是比较地址值,重写后就看是怎么重写的了
回复 使用道具 举报
==:
                          基本类型:比较的是基本类型的值是否相同
                          引用类型:比较的是引用类型的地址值是否相同
                  equals:
                          默认情况下,比较的对象的地址值是否相同。
                          如果我们想按照我们的需要把对象进行比较,那么,我们应该重写equals()方法。
回复 使用道具 举报
==可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
==可以用于比较引用数据类型,比较的是对象的地址值是否相等。
equals只能用于比较引用数据类型的。
equals Object提供的equals是用于比较对象地址值是否相同。
equals自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马