对象包装器和自动装箱
来源:互联网 发布:提高英语水平的软件 编辑:程序博客网 时间:2024/05/17 07:27
对象包装器和自动装箱
有时,需要将int
这样的类型转化为对象。所有的基本类型都有一个与之对应的类。例如,Integer
类对应基本类型int
。通常,这些类称为包装器(wrapper)。这些对象包装器拥有很明显的名字:Integer
、Long
、Float
、Double
、Short
、Byte
、Character
、Void
和Boolean
(前6个类派生于公共的超类Number
)。对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,对象包装器还是final
,因此不能定义它们的子类。
例如:
ArrayList<Integer> list = new ArrayList<>();
下面这个调用:
list.add(3);
将自动地变成:
list.add(Integer.valueOf(3));
这种变换被称为自动装箱。
相反地,当将一个Integer
类型对象赋值给一个int
值时,将会自动拆箱。也就是说,编译器将下列语句:
int n = list.get(i);
翻译成:
int n = list.get(i).intValue();
关于自动装箱还有以下几点需要说明。首先,由于包装器类引用可以为null
,所以自动装箱可能会抛出一个NullPointerException
:
Integer n = null;System.out.println(2 * n); // Throws NullPointerException
另外,如果在一个表达式中混合使用Integer
和Double
类型,Integer
值就会拆箱,提升为double
,再装箱为Double
:
Integer n = 1;Double x = 2.0;System.out.println(true ? n : x); // Prints 1.0
最后,自动装箱和拆箱是编译器认可的,而不是虚拟机。编译器在生成类的字节码时,插入必要的方法调用。虚拟机只是执行这些字节码。
0 0
- 对象包装器和自动装箱
- 对象包装器和自动装箱
- 对象包装器 自动装箱
- 对象包装器与自动装箱和拆箱
- 5.4 对象包装器与自动装箱
- 对象包装器与自动装箱
- (九)对象包装器与自动装箱
- Integer包装器,自动装箱的机制和时机。
- 基本数据类型对象包装类、自动装箱和自动拆箱
- 基本数据类型对象包装类和自动装箱自动拆箱技术
- [疯狂Java]面向对象:基本类型的包装器类型、自动装箱/拆箱、包装器类型大小/相等比较
- D对象包装器与自动装箱 基本数据类型的equals与==
- 对象包装器与自动(拆箱)装箱+参数数量可变的方法+枚举类
- 黑马程序员:Java基础总结----对象包装类&自动装箱
- 关于包装类自动装箱时是否产生相同对象
- JAVA——基本数据类型对象包装类/自动装箱
- Java 包装类 自动装箱和拆箱
- 自动装箱和拆箱(包装和解包)
- Redis的安装和基本使用笔记
- Ubuntu16.10下安装Hadoophadoop-2.8.0(单机模式)
- 二分查找以及位图法
- 采用归并排序思想解决逆序对数问题
- Kitti数据集进行目标检测批处理和shell的入门
- 对象包装器和自动装箱
- JavaWeb前端知识-JavaScript基础
- react native codepush热更新解决成功更新
- Android 利用多线程从网络下载文件
- Hdu-1016-Prime Ring Problem [dfs]
- Macromedia Dreamweaver 8—页面三剑客之一与我的故事
- boolan——c++学习笔记之设计模式一
- js中的DOM
- Avformat_open_input函数的分析之--HTTP篇