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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李亚西 高级黑马   /  2014-8-14 20:51  /  2117 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家能具体说下equals和==的用法吗?越具体越好

10 个回复

倒序浏览
个人理解,==比较的是地址值,equals其实差不多,但是在一些类中重写了方法,所以可以比较内容:loveliness:
回复 使用道具 举报
恩 等着看看各位路人的答案
回复 使用道具 举报
本帖最后由 ximi 于 2014-8-14 23:47 编辑
  1. int number1 = 1;
  2.                 int number2 = 1;
  3.                
  4.                 /*
  5.                  * true
  6.                  * int为基本类型,所以对比的值即1==1,结果为true
  7.                  */
  8.                 System.out.println(number1 == number2);
  9.                
  10.                 String a = new String("a");
  11.                
  12.                 String b = new String("a");
  13.                
  14.                 String c = new String("c");
  15.                 //输出a/b/c的哈希码值
  16.                 System.out.println(a.hashCode());//97
  17.                 System.out.println(b.hashCode());//97
  18.                 System.out.println(c.hashCode());//99
  19.                 /*
  20.                  * true
  21.                  * a和b都是对象,所以比较哈希码值,结果97==97为true
  22.                  */
  23.                 System.out.println(a.equals(b));
  24.                 /*
  25.                  * false
  26.                  * 这里比较的内存地址
  27.                  */
  28.                 System.out.println(a == b);
  29.                 /*
  30.                  * false
  31.                  * a和b都是对象,所以比较哈希码值,结果97==99为false
  32.                  */
  33.                 System.out.println(a.equals(c));
  34.                 /*
  35.                  * false
  36.                  * 这里比较的内存地址
  37.                  */
  38.                 System.out.println(a == c);
  39.                
  40.                 /*
  41.                  * equals 和 == 参见下面信息
  42.                  * http://wenku.baidu.com/link?url=_5wAJQarxUdHotDoyWRbXrMoE7KqaMgwee8qz-ykUne90ZhksHwxoprUpFApGGSRRMrlnlq2IB-WH6Hm3A0LabTV7CDGCT0K4CUM8uFhXPK
  43.                  *
  44.                  * hashCode:参见下面信息
  45.                  * http://www.iteye.com/topic/257191
  46.                  * http://blog.csdn.net/fenglibing/article/details/8905007
  47.                  */
复制代码

回复 使用道具 举报
柠萌不 发表于 2014-8-14 21:02
个人理解,==比较的是地址值,equals其实差不多,但是在一些类中重写了方法,所以可以比较内容 ...

好的,谢谢你的回答
回复 使用道具 举报
==和equals()的区别?
                        A:==
                                基本类型:比较的是基本类型的值是否相同
                                引用类型:比较的是对象的地址值是否相同
                        B:equals()
                                默认情况下,比较对象的地址值。
                                如果重写了该方法,那么,什么作用请看自己的代码(一般情况下,最常用的是改写它用于比较内容是否相同)。
回复 使用道具 举报
依然超级赛亚人 发表于 2014-8-15 07:08
==和equals()的区别?
                        A:==
                                基本类型:比较的是基本类型的值是否相同

嗯,这个不错
回复 使用道具 举报
两个意思差不多吧 主要还是看用的环境
回复 使用道具 举报
柠萌不 发表于 2014-8-14 21:02
个人理解,==比较的是地址值,equals其实差不多,但是在一些类中重写了方法,所以可以比较内容 ...

是的,equals如果不复写,用的是Object的方法,还是用了==
回复 使用道具 举报
当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,则只有两个变量的值相等,就将返回true
回复 使用道具 举报
但对于两个引用类型变量,他们必须指向同一个对象时,==判断才会返回true、==不可用于比较类型上没有父子关系的两个对象。equals方法是object提供的一个实例方法,所有引用变量都可调用该方法来判断是否与其他引用变量相等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马