包装类及Number类
- 包装类
- Java中当需要使用数字的时候,我们通常使用内置数据类型(基本数据类型),但是Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。为了解决这个问题,Java为每一个内置数据类型提供了对应的包装类。
- 装箱
-
有了基本数据类型和包装类,就需要将他们互相进行转换。比如把一个基本数据类型的 int 转换成一个包装类型的 Integer
对象。而包装类是基本类型包装后的结果,基本数据类型转换成包装类的过程就是装箱。把包装类转换成基本数据类型的过程就是拆箱。 -
在Java 5 之前,通过以下代码进行装箱:
//装箱 Integer i = new Integer(10);
- 自动拆箱与自动装箱
-
Java 5 以后,提供了自动拆箱与自动装箱功能。
自动装箱: 就是将基本数据类型自动转换成对应的包装类。 自动拆箱:就是将包装类自动转换成对应的基本数据类型。
Integer x = 100; //自动装箱 int y = x; //自动拆箱 //Integer i=100 替代了 Integer i = new Integer(10); //自动装箱直接将基本数据类型转换成包装类,这里省略了手动去new一个Integer对象的过程。
- 自动装箱与自动拆箱的实现原理
- 例如: int 的自动装箱通过 Integer.valueOf() 方法实现,Integer 的自动拆箱通过 integer.intValue 实现。
- 结论:自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。
- 自动拆装箱应用场景
-
1、将基本数据类型放入集合类
package com.baidu.www; import java.util.ArrayList; import java.util.List; /** * Created by joker on 2021/12/8. */ public class baoZhuangLei { public static void main(String[] args) { List<Integer> s = new ArrayList<>(); for (int i = 0; i < 100; i++) { s.add(i); //自动装箱 } } }
-
2、包装类型和基本类型的比大小
-
3、包装类型的运算
两个包装类型之间运算,首先分别自动拆箱成基本类型,然后再使用基本类型进行计算,运算结果是基本数据类型。
-
4、使用自动拆装箱要注意:
包装对象的数值比较,-128到127之间的数字可以使用 == ,这个范围之外需要使用 equals 。 由于自动拆箱,如果包装类对象为null,那么自动拆箱时有可能抛出异常。 如果一个for循环中有大量拆装箱操作,会浪费很多资源。