Integer的一道面试题详解

 题目就是这样的:java

Integer i1=100;
		Integer i2=100;
		Integer i3=1000;
		Integer i4=1000;
		System.out.println(i1==i2);
		System.out.println(i3==i4);

结果会是什么呢?数组

true
false
和你想的不同吧,这是为何呢?根据java编译机制,Interger i1=100会在编译时变成Interger i1=Integer.valueOf(100),而这个所谓的valueOf()在实现的时候会判断你的数字是否在缓存的-128到127之间,若是在就直接从缓存的数组里面返回一个对象,若是没有就须要new一个新的对象了。这也就是为何不同的缘由了缓存

相关文章
相关标签/搜索