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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

子康JAVA

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 子康JAVA 初级黑马   /  2013-6-5 23:31  /  1732 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

equals“==”有什么区别,分别在什么情况下使用?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

16 个回复

倒序浏览
==是判断两个变量或实例是不是指向同一个内存空间
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;

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
==和equals最大区别是“==”在判断两者是否在同一个内存空间,而equals是一种多用于引用类型判断值是否相等的。
所以==多用于基本数据类型的比较,equals多用于引用数据类型的比较。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
==和equals()方法都可以用来判断字符串,但所判断的内容是有差别的。简单说,==判断的是两个字符串对象在内存中的首地址,就是判断是否是同一个字符串对象,而equals()方法判断的是两个字符串对象的值是否相等。例如:
  1. String str1 = new String("我是黑马人");
  2.                 String str2 = new String("我是黑马人");
  3.                 if (str1 == str2) {
  4.                         System.out.println("两个字符串相同");

  5.                 } else {
  6.                         System.out.println("两个字符串不同");
  7.                 }
  8.                 if (str1.equals(str2)) {
  9.                         System.out.println("两个字符串值相同");
  10.                 } else {
  11.                         System.out.println("连个字符串值不同");
  12.                 }
复制代码
输出结果:两个字符串不同
         两个字符串值相同
看论坛帖子:http://bbs.itheima.com/forum.php ... mp;page=1#pid340597

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
在除string类的其他类中,== 和equals 并无区别都是比较内存地址,因为==是比较内存地址,而它们的equals方法都是继承的object类的equals方法,object的equals方法也是==实现的。而 string类重写了 equals方法,所以可以比较值的相等。只要记住这一点就行了

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
== 是比较是否是同一个内存地址。而equals方法则是根据重写 Object 类中的equals 方法,来实现特定值的比较。
如:
String a = "abc" ;
String b = new String("abc") ;
如果a == b 则 为false, a.equals(b) 则为true;

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
== 在比较基本类型的变量时是比较值是否相等,如果比较的对象时引用类型则比较的是否指向同一对象,也就是比较是否是同一内存地址;我们常用的是String类的equals方法,它重写 了Object 类中的equals 方法,只要比较的两个对象的值相等就返回true。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
一般来说equals是比较两个对象的值是否相等,==是比较两个引用是否指向同一个对象,有点印象就行,做东西出错的时候就明白怎么回事了。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
equals:比计较对象的内容
回复 使用道具 举报
==是判断引用是否相等  equals是比较值 是否相等
回复 使用道具 举报
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。{:soso_e102:}
回复 使用道具 举报
桉树 发表于 2013-6-6 12:32
== 是比较是否是同一个内存地址。而equals方法则是根据重写 Object 类中的equals 方法,来实现特定值的比较 ...

加油  小鬼
回复 使用道具 举报
==是比较两个引用是否是指向同一个内存空间,而equals是比较两个对象的值是否一样,这种情况大部分出现在String中.只要记住判断值是否相等的时候用equals就可以了.
回复 使用道具 举报
http://blog.csdn.net/u010859707/article/details/9078741
我写的,应该对你理解有很大帮助
回复 使用道具 举报
== 判断两个对象的地址值是否相等,
而equals多用于引用数据类型的比较。在字符串中equals方法原来比较两对象的字符序列是否相同。
其实这个方法是重写Object类中的equals方法,所以这个方法在对于不同类型的对象中,他比较的内容也是不同的。
比如你定义了一个Person类,覆盖了equals方法来判读两个是是否为同一个人,判断的条件是,姓名和年龄相同为同一个人。
而别人也定义了一个person类,人家判断的条件是,姓名相同,年龄相同。出生地相同才算同一个人。
所以对于equals方法呢要看对于什么类型的对象。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马