一道笔试题:
-
public static void main(String [] args){
-
Integer a=100;
-
Integer b=100;
-
System.out.println(a==b);//true
-
Integer c=200;
-
Integer d=200;
-
System.out.println(c==d);//false
-
}
解析:Integer a=100;这句代码会进行自动装箱,实际会调用Integer.valueOf(100)将100转化成Integer类型的
Integer类中valueOf方法的实现中,对数据分开处理的:当数据在-128到127之间a和b就使用同一个对象
当数据不在这个范围之内比如c和d就使用不同的对象。然后用c和d比较两个对象的内存地址就是false
Integer类的valueOf方法实现如下:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30246495/viewspace-1690358/
,如需转载,请注明出处,否则将追究法律责任。