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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

s1在内存中有一个对象,s2在内存中有两个对象
equals()方法:复写之前是比较两个对象的引用是不是一样的,功能和 “==” 一样一样的
复写之后是比较两个对象的中在推内存当中存储的内容是否是一样的
代码示例:
String s1 = "abc";  //只要对象一样  就指向的是同一个对象  而不再另开辟新的对象
String s2 = "abc";
if(s1 == s2)    打印输出  true;
if(s1.equals(s2))  打印输出  true;
问题:谁能帮忙举一个equals()被复写掉之前的例子呢?

3 个回复

倒序浏览
本帖最后由 谢述华 于 2012-5-25 18:06 编辑

普通类的实例都是没有覆写equals方法的,如下所示:
  1. class cw
  2. {
  3. public static void main(String[] args)
  4. {
  5. equalsDem int1=new equalsDem(1);
  6. equalsDem int2=new equalsDem(1);
  7. System.out.println(int1);
  8. System.out.println(int2);
  9. System.out.println(int1.equals(int2));
  10. }
  11. }
  12. class equalsDem{
  13. int x;
  14. equalsDem (int x){
  15. this.x=x;
  16. }
  17. }
复制代码
可以看到没有覆写toString和equals方法的效果。都是带有存储地址和类名等信息的。希望能够帮到你~~

运行效果.png (2.58 KB, 下载次数: 13)

运行效果.png

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
          Object e = new Object();
          System.out.println(e == e + "," + e.equals(e));
         
          Object c = new Object();
          System.out.println(e == c + "," + e.equals(c));
回复 使用道具 举报
上帝Object就有这个方法。
== 是比较两个对象的地址值是否相等;
equals()是比较两个对象的内容是事否相等;
String a = new String("abc");
String b = "abc";
System.out.println(a==b);  //输出false;
System.out.println(a.equals(b));//输出true;
你要看equals()被复写之前的样子,那么你就去看Object的equals()吧,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马