某培训机构出来的转行人,写博的目的在于记住自己面试中遇到的错误,初期理解较浅,望大神们助一臂之力理解透彻
题:int和Integer的区别;Integer i = 128; Integer j =128; System.out.println(i==j)的结果为什么,请写出理由
答:
1.int为基本数据类型,其默认值为0;Integer为引用类型,是int的包装类,其默认值为null;
2.Integer变量需要实例化才能使用;int不需要;
3.int 存在栈中;Integer的引用(即地址)存在栈中,对象数据存放在堆中;
System.out.println(ij);的值应该为false,Integer是一个很特殊的类(只针对Integer)在内存管理当中,在常量池中会对-128~127之间的值会做缓存处理,题中i跟j的值均为128,则此时不会做缓存,需要创建一个新的对象,new Integer(128),“”比较的是地址值跟内容,两者的地址值不同,则输出结果为false;换句话而言,如果Integr i=127; Integer j = 127, 此时i==i