A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庄星睿 中级黑马   /  2012-6-12 13:28  /  1507 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Integer 包装类的实例进行比较,分享一下:
两个超过bye[]类型的数值就不相等
  1. Integer ina=2;
  2. Integer inb=2;
  3. System.out.println(ina==inb); //true
  4. Integer inc=128;
  5. Integer ind=128;
  6. System.out.println(inc==ind); //false
复制代码
这与java的Integer类的设计有关,查看一下java系统中java.lang.Integer类的源代码
  1. static final Integer[] catch=new Integer[-(-128)+127+1];
  2. static
  3. {
  4. for(int i=0;i<catch.length;i++)
  5. catch[i]=new Integer(i-128);

  6. }
复制代码
系统把-128~127之间的整数自动封装成Integer对象,并放入了一个名为catch的数组中缓存起来。如果以后把一个-128~127之间的整数自动装箱成一个Integer对象时,实际上是直接指向对应的数组元素,因此-128~127之间的同一个整数自动装箱成Integer实例时,永远都是引用catch数组的同一个数组元素,所以它们相等;但每次把一个不在-128~127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以会出现程序中的运行结果。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马