Integer在遇到运算符时会进行自动拆包。缓存存储的范围为-128~127 和 字符串缓存。
package com.jvmtest;
public class ZhiDongZhuangXiang {
public static void main(String[] args) {
Integer a=1;//Integer a = Integer.valueOf(1);
Integer b=2;
Integer c=3;
Integer d=3;
Integer e=321;
Integer f=321;
Long g = 3L;
System.out.println(c==d);//true Integer.valueOf()
System.out.println(e==f);//false
System.out.println(c==(a+b));//true
System.out.println(c.equals(a+b));//true
System.out.println(g==(a+b));//true
// System.out.println(g==c);//编译不通过
System.out.println(g.equals(a+b));//false
System.out.println("-----------------");
Integer k = new Integer(3);
int h = 321;
int i = 321;
System.out.println(h==i);//true
System.out.println(k==c);//false
System.out.println(k+1==c+1);//true
String ab = "1234";
String ab2 = "1234";
String ab3 = new String ("1234");
System.out.println(ab==ab2);//true
System.out.println(ab==ab3);//false
System.out.println(ab.equals(ab3));//true
Integer j = new Integer(100);
int l = 100;
System.out.print(j == l); //true
}
}
反编译后的代码
package com.jvmtest;
import java.io.PrintStream;
public class ZhiDongZhuangXiang
{
public static void main(String[] args)
{
Integer a = Integer.valueOf(1);
Integer b = Integer.valueOf(2);
Integer c = Integer.valueOf(3);
Integer d = Integer.valueOf(3);
Integer e = Integer.valueOf(321);
Integer f = Integer.valueOf(321);
Long g = Long.valueOf(3L);
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c.intValue() == a.intValue() + b.intValue());
System.out.println(c.equals(Integer.valueOf(a.intValue() + b.intValue())));
System.out.println(g.longValue() == a.intValue() + b.intValue());
System.out.println(g.equals(Integer.valueOf(a.intValue() + b.intValue())));
System.out.println("-----------------");
Integer k = new Integer(3);
int h = 321;
int i = 321;
System.out.println(h == i);
System.out.println(k == c);
System.out.println(k.intValue() + 1 == c.intValue() + 1);
String ab = "1234";
String ab2 = "1234";
String ab3 = new String("1234");
System.out.println(ab == ab2);
System.out.println(ab == ab3);
System.out.println(ab.equals(ab3));
Integer j = new Integer(100);
int l = 100;
System.out.print(j.intValue() == l);
}
}