zoukankan      html  css  js  c++  java
  • 诡异的Integer

    先看下面的这个代码,为什么同样的都是赋值,却得不到同样的结果,也没有超出int的范围啊?这是为什么?

    package ppt_test;
    
    public class StrangeIntegerBehavior 
    {
    	public static void main(String[] args)
    	{        
    		Integer i1=127;       
    		Integer j1=127;       
    		System.out.println(i1==j1);        
    		Integer i2=128;        
    		Integer j2=128;        
    		System.out.println(i2==j2);    
    	}
    }
    

      原来是因为java中的int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0, 而Integer的默认值为null。

           Integer作为常量时,对于-128127之间的数,会进行缓存,也就是说int a1 = 127时,在范围之内,这个时候就存放在缓存中,当再创建a2时,java发现缓存中存在127这个数了,就直接取出来赋值给a2,所以a1==a2的。当超过范围就是new Integer()来new一个对象了,所以a、b都是new Integer(128)出来的变量,所以它们不等。

    © 版权声明
    文章版权归作者所有,未经允许请勿转载。
    THE END
  • 相关阅读:
    jq的stop
    mouseover,mouseout与mouseenter,mouseleave
    jq的load
    KeyUp 和KeyDown 、KeyPress之间的区别
    jq的error
    $(function() {....}) ,(function($){...})(jQuery)
    delegate事件委托
    将项目提交到git
    linux下安装jenkins
    手写简单的linkedlist
  • 原文地址:https://www.cnblogs.com/xp-thebest/p/11704228.html
Copyright © 2011-2022 走看看