package me.zhao;
public class IntegerTest {
public static void main(String[] args) {
int a1 = 127;
int a2 = 127;
int b1 = 128;
int b2 = 128;
System.out.println("a1 == a2 " + (a1 == a2));
System.out.println("b1 == b2 " + (b1 == b2));
Integer c1 = 127;
Integer c2 = 127;
Integer d1 = 128;
Integer d2 = 128;
System.out.println("c1 == c2 " + (c1 == c2));
System.out.println("d1 == d2 " + (d1 == d2));
System.out.println("a1 == c1 " + (a1 == c1));
System.out.println("b1 == d1 " + (b2 == d2));
Integer e1 = Integer.valueOf(127);
Integer e2 = Integer.valueOf(127);
Integer f1 = Integer.valueOf(128);
Integer f2 = Integer.valueOf(128);
System.out.println("e1 == e2 " + (e1 == e2));
System.out.println("f1 == f2 " + (f1 == f2));
Integer g1 = new Integer(127);
Integer g2 = new Integer(127);
Integer h1 = new Integer(128);
Integer h2 = new Integer(128);
System.out.println("g1 == g2 " + (g1 == g2));
System.out.println("h1 == h2 " + (h1 == h2));
System.out.println("a1 == g1 " + (a1 == g1));
System.out.println("b1 == h1 " + (b1 == h1));
System.out.println("e1 == g1 " + (e1 == g1));
System.out.println("f1 == h1 " + (f1 == h1));
}
}
a1 == a2 true
b1 == b2 true
c1 == c2 true
d1 == d2 false
a1 == c1 true
b1 == d1 true
e1 == e2 true
f1 == f2 false
g1 == g2 false
h1 == h2 false
a1 == g1 true
b1 == h1 true
e1 == g1 false
f1 == h1 false
结论:
- 两个
int
相比较,总是会比较值 - 两个
非new的Integer
比较时(包括Integer.valueOf),如果值是在-128 ~ 127
之间,则比较的是值,为true;否则比较的是地址,为false。例如c1 == c2、d1 == d2、e1 == e2、f1 == f2 - 两个
new Integer
比较时,比较的是地址,为false。例如g1 == g2、h1 == h2 - 当
int与Integer
(包括new与非new的Integer)比较时,Integer会自动拆箱为int,相当于两个int的进行值的比较,为true。例如a1 == c1、b1 == d1、a1 == g1、b1 == h1