黑马程序员技术交流社区

标题: 交流:比较两个对象时需要注意的一个小细节_Integer [打印本页]

作者: 十万一千    时间: 2014-11-24 16:49
标题: 交流:比较两个对象时需要注意的一个小细节_Integer
  1. package com.itheima.test2;

  2. public class 对象中Integer成员变量的比较 {
  3.         public static void main(String[] args) {
  4.                 Foo foo1 = new Foo(1000000);
  5.                 Foo foo2 = new Foo(1000000);
  6.                 System.out.println(foo1.equals(foo2));//false  [参考equals方法]

  7.                 Foo foo3 = new Foo(1);
  8.                 Foo foo4 = new Foo(1);
  9.                 System.out.println(foo3.equals(foo4));//true
  10.         }
  11. }

  12. class Foo {
  13.         public Foo(Integer integer) {
  14.                 super();
  15.                 this.integer = integer;
  16.         }

  17.         private Integer integer;// 如果是int 则可以直接用“==”比较

  18.         public Integer getInteger() {
  19.                 return integer;
  20.         }

  21.         public void setInteger(Integer integer) {
  22.                 this.integer = integer;
  23.         }

  24.         @Override
  25.         public boolean equals(Object obj) {
  26.                 System.out.println("调用equals方法");
  27.                 if (obj instanceof Foo) {
  28.                         return this.integer == ((Foo) obj).integer;
  29.                         /*
  30.                         Integer类中equals方法的实现,可以看到最终Integer转换成了int再使用“==”比较
  31.                         public boolean equals(Object obj) {
  32.                                   if (obj instanceof Integer) {
  33.                                     return value == ((Integer)obj).intValue();
  34.                                         }
  35.                                 return false;
  36.                     }
  37.                         */
  38.                         // return this.integer.equals(((Foo) obj).integer);
  39.                 }
  40.                 return false;
  41.         }
  42. }
复制代码
细节:对象中有Integer类型的成员变量做值的大小比较时,尽量采用Integer的equals方式比较保险!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2