2-16里的Integer.valueOf();

2-16里的Integer.valueOf();

Integer.valueOf();这是好难理解,听不懂。跟什么对象池,-127、128有关系,这到底是什么啊?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好

1、当数值在-128<=变量<=127,进行自动装箱操作时(不是自动拆箱),会调用Integer.valueOf()方法。

2、理解正确。

3、理解正确。

4、是的。当新创建包装类对象的值为20,并且此时缓存区中没有20的值时,需要重新调用Integer.valueOf()方法创建新的对象,然后再将新的包装类的对象存入缓存区。

 如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 鱼儿0001 提问者 #1
    好的,谢谢老师!
    2019-06-19 16:39:00
吃吃吃鱼的猫 2019-06-15 18:27:11

同学你好,将这几个概念分开理解。

Integer.valueOf方法是将基本数据类型int转化为包装类型Integer。

对象池是内存中的一块区域,使用的基本思路是:将用过的对象保存起来,等下一次需要这个对象的时候,再拿出来重复使用,从而在一定程度上减少频繁创建对象所造成的开销。 

Integer类型是一个表示整数型到对象,也就是表示1,2,3,4等整数。

与对象池等联系是:当定义一个int类型变量,例如num=10;数值在-128~127之间时,会存放到对象池中,下次再使用10这个数时,就直接去对象池中去取。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。因为这里是包装类最大的难点,每天都把课程看一遍,打一打,多少有所领悟了。老师,我的理解是这样的:1、使用自动拆箱,当数值在-128<=变量<=127时,会调用Integer.valueOf()方法。2、当数值不在-128<=变量<=127时,会new Integer();带参构造方法。3、缓存区或者叫对象池,是调用Integer.valueOf()方法会进入的内存区,变量的数值满足-128到127范围,创建对象后会存入缓存区。如果下次还有一个新的包装类对象,它存储的数值跟缓存区里的对象存储的数值相同,就会直接将缓存区存储的对象。
    2019-06-19 11:38:25
  • 提问者 鱼儿0001 #2
    老师,缓存区存储的对象,它存储的数值是100。然后我再创建一个新的包装类对象,它存储的数组是20,这样的情况下新的包装类对象就不会复制缓存区先前存储的对象了吧?是不是需要重新调用Integer.valueOf()方法创建新的对象,接下来是不是会把新的包装类的对象也存入缓存区?
    2019-06-19 11:41:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师