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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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方式比较保险!

评分

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

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马