查看完整版本: 一个关于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.[url=http://www.webetis.com/][color=black]千选拖把[/color][/url]println("i3!=i4");
  }
  结果是:i1=i2
  i3=i4
  为什么那?
  java “==”就是比较引用,没有重载过
  而由于-128至127内的Interger都是同一个对象引用,所以第一个比较式true
  之外的Interger 则不是同一个对象,所以比较为false
  重载的应该是equals()方法,所以如果用equals来比较都为true
页: [1]
查看完整版本: 一个关于Integer的问题