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。

最新文章

  1. Jenkins插件安装和系统配置
  2. PHP与MYSQL事务处理
  3. C语言指针转换为intptr_t类型
  4. 外国javascript资源搜索
  5. JSP - 9大内置对象及其API
  6. The Template method pattern
  7. 移植UE4的模型操作到Unity中
  8. 测试过程中LR的关联报错
  9. 代码里面执行bat
  10. RedHat搭建IPA-Server
  11. gettid()和pthread_self()的区别
  12. Python二分法查找及变种分析
  13. vsCode 代码不高亮显示的问题
  14. Linux 权限位详解
  15. sql server中的charindex函数用法解析(在一段字符中搜索字符或者字符串-----返回expression1在expression2出现的位置;反之,返回0)
  16. Windows 10忘记登录密码不用怕,系统U盘/光盘轻松重置
  17. sqli-labs(十四)(宽字节注入)
  18. [转]抓取当前登录用户登录密码的工具:mimipenguin
  19. linux cp操作,每天学习一点
  20. 17monipdb.dat

热门文章

  1. 70路小报:用PV和UV作为网站衡量指标已经过时
  2. Linux(五)shell编程基础
  3. 【转载 save】vim键位图。
  4. [ACM][2018南京预赛]Magical Girl Haze
  5. cpu的核数
  6. isNaN与parseInt/parseFloat
  7. linux 文件IO
  8. 分布式监控系统开发【day37】:监控数据如何存储(七)
  9. Kubernetes - Deploy Guestbook example on Kubernetes
  10. poi对word的操作(总结)