Board logo

标题: 一个关于Integer的问题 [打印本页]

作者: qingqing3721    时间: 2011-10-23 13:41     标题: 一个关于Integer的问题

首先看一下这段代码
  Integer i1 = 100;
  Integer i2 = 100;
  if (i1==i2) {
  System.out.println("i1==i2");
  } else {
  System.out.println("i1!=i2");
  }
  Integer i3 = 200;
  Integer i4 = 200;
  System.out.println(i3);
  System.out.println(i4);
  if (i3==i4) {
  System.out.println("i3==i4");
  } else {
  System.out.println("i3!=i4");
  }
  结果是:i1=i2
  i3!=i4
  再看下面代码
  Integer i1 = 100;
  Integer i2 = 100;
  if (i1.equals(i2)) {
  System.out.println("i1==i2");
  } else {
  System.out.println("i1!=i2");
  }
  Integer i3 = 200;
  Integer i4 = 200;
  System.out.println(i3);
  System.out.println(i4);
  if (i3.equals(i4)) {
  System.out.println("i3==i4");
  } else {
  System.out.千选拖把println("i3!=i4");
  }
  结果是:i1=i2
  i3=i4
  为什么那?
  java “==”就是比较引用,没有重载过
  而由于-128至127内的Interger都是同一个对象引用,所以第一个比较式true
  之外的Interger 则不是同一个对象,所以比较为false
  重载的应该是equals()方法,所以如果用equals来比较都为true




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0