Integer.valueOf方法
1、在前面的学习里,Integer.valueOf()方法是将字符串类型的对象转换为包装类的对象,怎么在2-16里它似乎又有了新的功能?
2、Integer four=100自动装箱,隐含的应该是:Integer four=new Integer(100);这个步骤。
那么这与Integer.valueOf()方法又有什么关系?
3、同样都是Integer类的对象对比:
Integer one=new Integer(100);
Integer two=new Integer(100);
System.out.println("one==two的结果:"+(one==two));//1
返回false
而:
Integer three=100;//自动装箱
System.out.println("three==100的结果:"+(three==100));//2 自动拆箱
Integer four=100;
System.out.println("three==four的结果:"+(three==four));//3
为什么返回true?
正在回答
JDK1.8的中文API:https://www.cnblogs.com/xpwi/p/9788175.html,拿走不谢
关于同学的回复,有如下的回答:
1、Integer包装类中的valueOf是有三个,除了上边提到的,还有一个两个参数的valueOf(String s, int radix),具体的valueof()方法如下:
同学要学会使用api来了解更多:https://docs.oracle.com/javase/8/docs/api/index.html
2、关于第二点,纠正一下,自动装箱操作时,当-128<=参数<=127时,自动装箱使用的是Integer.valueOf(),当参数不在这个范围内,使用的new Integer()的方式完成装箱操作。
3、自动拆箱使用的是intValue()方法。
4、缓存区是Java的一种设计,暂且同学只需要了解,能够使用即可。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
同学你好,关于同学的问题有如下回答:
1、Integer.valueOf()方法中的参数如果是String类型的,就是将String类型的对象转换为包装类的对象,如果是int值,就是将int值转换为Integer包装类对象。2-16小节中使用的后一种方式,将int值转换为Integer对象。
2、在底层,自动装箱是使用Integer.valueOf()方法完成装箱操作。
3、关于第三个问题,老师在8:30之后讲解了原因。Java提供了一个缓存区机制,当-128<=参数<=127时,会直接从缓存区查找是否存在这样一个对象,如果存在,则直接产生一个对象,如果没有,则会调用new关键字新建一个对象。100在-128和127之间,所以three和four都是直接从缓存区产生的对象,指向的是同一个对象,所以three==four的比较结果为true,如果一个参数值大于127,比如:Integer one = 128,Integer two = 128的比较将会返回false,如:
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星