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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© william_J 中级黑马   /  2014-11-21 21:46  /  1201 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Integer i = new Integer(127);
Integer i = 127;
这俩个有区别吗?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

7 个回复

倒序浏览
有区别啊,Integer i = 127;实际是调用Integer.valueOf(127);而不是转化成new Integer(127);当值为byte类型时,Java在Integer中有事先缓存好的原型对象, 每次返回的都是同一个Integer对象,只有不在这个范围的数才会new出一个Integer
而Integer i = new Integer(127);就直接new了~

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
第一个是先在堆内存中new出一个对象 ,把堆内存中的对象的地址值赋给i,同时在对象中会有地址值指向常量池中的127,而第二个是i的地址值直接指向常量池中的127
回复 使用道具 举报
没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   
回复 使用道具 举报
迷失的小Z 发表于 2014-11-21 22:34
第一个是先在堆内存中new出一个对象 ,把堆内存中的对象的地址值赋给i,同时在对象中会有地址值指向常量池 ...

堆内存中创建的对象,是指的数组和类这样的引用数据类型吧,难道Integer也是引用数据类型?求解啊?
回复 使用道具 举报
Smart_lll 发表于 2014-11-21 22:44
堆内存中创建的对象,是指的数组和类这样的引用数据类型吧,难道Integer也是引用数据类型?求解啊? ...

是啊…… Integer是int的封装类,说白了就是一个类……而且……除了基本数据类型之外不就是引用数据类型么……
回复 使用道具 举报
迷失的小Z 发表于 2014-11-21 22:47
是啊…… Integer是int的封装类,说白了就是一个类……而且……除了基本数据类型之外不就是引用数据类型 ...

对哈,我现在还在学视频。。。
回复 使用道具 举报
new 出来的永远都是新的。指向的地址是不一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马