首先看一下这段代码
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