自动装箱和自动拆箱
来源:互联网 发布:手机端淘宝首页的模板 编辑:程序博客网 时间:2024/06/12 01:04
上篇博文-->包装类缓存池浅析说到
在这行代码上
Integer i = 100;
编译器会自动为我们加上一个valueOf方法,即
Integer i = Integer.valueOf(100);
这个Integer.valueOf()方法就是自动装箱,把一个基本数据类型的值,包装成一个相应的类,在这个包装类中包含一些对此种数据类型常用的一些相关操作。
所以,我们也就知道了什么是自动拆箱,就是把一个包装类转换为一个基本数据类型,比如:
Integer i = 100;int value = i + 1;
Integer i = Integer.valueOf(100);int value = i.intValue() + 1;
我们由上能看出,自动装箱使用的是Intger.valueOf()方法,从其形式可以得出,此方法是静态方法;
自动拆箱使用的是intValue()方法,对应的,此方法只是一个普通方法,只能通过创建对象的方式调用。
嗯?为什么呢?包装类不就比基本数据类型多几个方法吗?顶多麻烦我转换一下不就好了?
但是,你想过这个问题吗
比如有一个Student类
class Student { //记录姓名 private String name; //记录学号 private String id; //记录考试成绩 private int score; ... ...//类体 ...}String类型的好说,引用数据类型,不赋值时为null,我们也可以清楚的知道它为null的原因就是没有填。
但是score呢,你不对它进行初始化,它就默认为0,当我们回头再使用这个数据值时,我们如何得知这个0,是你考了0分,还是缺考了呢?
包装类为我们解决了这个问题
class Student { //记录姓名 private String name; //记录学号 private String id; //记录考试成绩 private Integer score; ... ...//类体 ...}因为Integer是一个类,所以当调用参数时返回一个null,那我们就可以清楚的知道---这是缺考;如果返回一个0,那我们同样可以分辨出,这是考类0分
此外,如果我们想把score存储到集合里去。孰优孰劣显而易见。
ArrayList<Integer> list1 = new ArrayList<>();ArrayList<int> list2= new ArrayList<>();
1,包装类比基本数据类型提供了丰富的属性和API,方便使用
2,包装类支持泛型
3,包装类更符合面向对象的思想,更能模拟现实世界。
阅读全文
0 0
- 自动装箱和自动拆箱
- java 自动装箱 和 自动拆箱
- 自动装箱和自动拆箱
- java自动装箱和自动拆箱
- Java自动拆箱和自动装箱
- 什么是自动装箱?和自动拆箱?
- Java自动装箱和自动拆箱
- JAVA自动装箱和自动拆箱
- Java自动装箱和自动拆箱
- 自动装箱和自动拆箱
- Java自动装箱和自动拆箱
- 自动拆箱和自动装箱
- 自动装箱和拆箱
- 自动装箱和拆箱
- 自动拆箱和装箱
- 自动拆箱和装箱
- 自动装箱和拆箱
- 自动装箱和拆箱
- 关于Python安装图像库PIL的方案
- MFC(VC,C++)下,OCX内使用另外一个OCX方法(内嵌OCX)-《零度屏幕录像软件》之笔记一
- 浅谈桌面启动一个应用Activity
- 11muduo_base库源码分析(二)
- spring boot 常用注解解析
- 自动装箱和自动拆箱
- java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.client.
- AngularJS ng依赖注入的三种方式
- 算法题练习系列之(二十): 打印沙漏
- 黑马和尚学堂如何选?我在朝着IT大神的方向努力着
- ASP cookies页面判断代码
- redis命令使用
- Struts2知识点回顾(三)Action要怎么写?
- 总结JAVA中的容器