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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林剑 中级黑马   /  2012-12-7 23:04  /  1280 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林剑 于 2012-12-8 08:28 编辑

class Value
{
        int i;
}
class Test12
{
        public static void main(String[] args)
        {
                Integer n1 = new Integer(47);
                Integer n2 = new Integer(47);
                System.out.println(n1.equals(n2));//打印结果是ture

                Value v1 = new Value();
                Value v2 = new Value();
                v1.i = v2.i = 100;
                System.out.println(v1.equals(v2));//打印结果是false
        }
}
不理解,哪位大神能仔细讲讲

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
                Integer n1 = new Integer(666);
                Integer n2 = new Integer(666);
                System.out.println(n1.equals(n2));//Integer比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。(在jdk1.6文档里看到的)

                Value v1 = new Value();
                Value v2 = new Value();
                v1.i = v2.i = 100;
                System.out.println(v1.equals(v2));
//类的equals方法一般使用hashcode的引用,两个引用肯定不同所以是false,如果想equals方法为true的话就要以类中某些字段为参照,覆写hashCode和equals方法,如图,这个在eclipse中有快捷键,张孝祥老师也再视频里讲了

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
  boolean equals(Object o){
   return this==o;
  }
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。
System.out.println(v1.equals(v2));v1,v2是两个独立的对象啊,打印出来的一定是false.

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
  1. package com.itheima.bbs.exercise;
  2. class Test110{
  3.         public static void main(String[] args)
  4.         {
  5.                 Integer n1 = new Integer(88);
  6.                 Integer n2 = new Integer(88);
  7.                 System.out.println(n1.equals(n2)); //打印结果是true
  8.                 System.out.println(n1 == n2); //打印结果是false
  9.                

  10.                 Value v1 = new Value();
  11.                 Value v2 = new Value();
  12.                
  13.                 v1.i = v2.i = 100;
  14.                 //override后
  15.                 System.out.println(v1.equals(v2)); //打印结果是true
  16.                 System.out.println(v1 == v2); //打印结果是false
  17.                
  18.         }
  19. }
  20. class Value
  21. {
  22.         int i;


  23.         @Override
  24.         public int hashCode() {
  25.                 final int prime = 31;
  26.                 int result = 1;
  27.                 result = prime * result + i;
  28.                 return result;
  29.         }

  30.         @Override
  31.         public boolean equals(Object obj) {
  32.                 if (this == obj)
  33.                         return true;
  34.                 if (obj == null)
  35.                         return false;
  36.                 if (getClass() != obj.getClass())
  37.                         return false;
  38.                 Value other = (Value) obj;
  39.                 if (i != other.i)
  40.                         return false;
  41.                 return true;
  42.         }
  43.        

  44. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马