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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公子-醉香 中级黑马   /  2013-12-16 21:39  /  1644 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 公子-醉香 于 2013-12-16 21:41 编辑
  1. public class AutoBox {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 //自动装箱,自动把一个int基本数据类型装成了一个Internet类型,并赋给了引用变量iObj
  8.                 Integer iObj=3;
  9.                 System.out.println(iObj+12)
  10.                 Integer i1=13;
  11.                 Integer i2=13;
复制代码

i1和i2是同一个对象吗?如果不是,该怎么区分呢?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

倒序浏览
是的,只要数值小于127就不会开辟新的空间。
回复 使用道具 举报
源代码中
  1. public static Integer valueOf(int i) {  
  2.        if(i >= -128 && i <= IntegerCache.high)  
  3.            return IntegerCache.cache[i + 128];  
  4.        else  
  5.            return new Integer(i);  
  6.    }  
复制代码

ava在编译的时候 Integer a = 3; 被翻译成-> Integer a = Integer.valueOf(3); ,对-128~127这256个值做了缓存放到IntegerCache做了缓存,对于上一次已经创建的,再使用的时候就不会再创建了。
但有的时候:
  1. Integer integer5=3;  
  2. Integer integer6=Integer.valueOf(3);  
  3. integer5++;  
  4. System.out.println(integer5==integer6);  
复制代码


返回:false

是因为a++的时候是创建了另外一个对象

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
自动装箱,自动把一个int基本数据类型装成了一个Internet类型,并赋给了引用变量 ,应该是Integer类型吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马