首页 > 其他 > 详细

关于Integer对象比较,和int基本类型比较的一些问题

时间:2014-08-15 14:48:19      阅读:320      评论:0      收藏:0      [点我收藏+]
public class Test {

	public static void main(String[] args) {
		
		Integer j = 192;
		int i = 192;
		System.out.println(new Integer(12) == new Integer(12));//false对象比较。///必然不同
		System.out.println(new Integer(192) == i);//true自动拆箱
		System.out.println(j == i);//true自动拆箱
		Integer x = 127;
		Integer y = 127;
		System.out.println(x == y);//java在编译的时候,被翻译成-> Integer i5 = Int//eger.valueOf(127);
		Integer k = 128;
		Integer l = 128;
		System.out.println(k == l);
	}

}
public static Integer valueOf(int i) {
         assert IntegerCache.high >= 127;
         if (i >= IntegerCache.low && i <= IntegerCache.high)            
        	 return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
    }

上面为Integer的valueOf源码对于-128到127之间的数,会进行缓存,Integer = 127时,会将127进行缓存,下次再写Integer = 127时,就会直接从缓存中取,就不会new了。所以小于等于127时候会true大于会false。。当然-128以下亦然

关于Integer对象比较,和int基本类型比较的一些问题,布布扣,bubuko.com

关于Integer对象比较,和int基本类型比较的一些问题

原文:http://zhudaoyan123.blog.51cto.com/8888071/1540419

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!