zoukankan      html  css  js  c++  java
  • Integer类实现方式和注意事项

    java.lang.Integer类的源代码:

    //定义一个长度为256的Integer数组
    static final Integer[] cache = new Integer[-(-128) + 127 + 1];
    static {
          //执行初始化,创建-128到127的Integer实例,并放入cache数组中
          for(int i = 0; i < cache.length; i++) {
                cache[i] = new Integer(i - 128);
          }      
    }

    从上面代码可以看出,系统把一个-128~127之间的整数自动装箱成Integer实例,并放入了一个名为cache的数组中缓存气力啊。如果以后把一个-128~127之间的整数自动装箱成一个Integer实例时,实际上是直接指向对应的数组元素,因此-128~127直接的同一个整数自动装箱成Integer实例时,永远都是引用cache数组的同一个数组元素,所以他们全部相等;但每次把一个不再-128~127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以会出现下面代码的运行结果:

    //通过自动装箱,允许把基本类型值赋值给包装类实例
    Integer ina = 2;
    Integer inb = 2;//输出true
    System.out.println("两个2自动装箱后是否相等:" + (ina == inb));
    
    Integer biga = 128;
    Integer bigb = 128;
    //输出false
    System.out.println("两个128自动装箱后是否相等:" + (biga == bigb));

     Java7曾强了包装类的功能,为所有的包装类都提供了一个静态的compare(xxx val1, xxx val2)方法,这样开发者就可以通过包装类提供的campare(xxx val1, xxx val2)方法来比较两个基本类型值的大小,包括比较两个博哦了安类型值,两个boolean类型值进行比较时,ture>false。

  • 相关阅读:
    android apk瘦身之 图片压缩 tinypng
    java 1.7 新io 实践 NIO2
    Still unable to dial persistent://blog.csdn.net:80 after 3 attempts
    dex2oat 加载多次
    android stadio open recent 在同一窗口打开
    &运算符的应用
    MethodTrace 生成的trace文件为空
    MethodTrace 生成的trace文件为空
    error: unknown host service 的详细解决办法
    error: unknown host service 的详细解决办法
  • 原文地址:https://www.cnblogs.com/wgl1995/p/9282977.html
Copyright © 2011-2022 走看看