public static void main(String[]args){
Integer f1=100,f2=100,f3=150,f4=150;
System.out.println(f1==f2);
System.out.println(f3==f4);
}
第一个结果为:true
第二个结果为:false
原因: 因为四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用;
而当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf;
所以,如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false