[1-01-01].第27节:常用类 - 包装类
Java基础语法学习大纲
一、包装类是什么:
- 1.为了方便开发,Java为8种基本数据类型分别又提供了对应的包装类(包装类都是引用数据类型)
- 2.对于8种基本数据类型对应的包装类分别是:
- byte:java.lang.Byte
- short:java.lang.Short
- int:java.lang.Integer
- long:java.lang.Long
- float:java.lang.Float
- double:java.lang.Double
- boolean:java.lang.Boolean
- char:java.lang.Character
二、Number类说明:
- 包装类中的6个数字类型都继承了Number类: Byte、Short、Integer、Long、Float、Double都继承了Number类,因此这些类中都有以下这些方法:
- 这些方法的作用就是将包装类型的数据转换为基本数据类型,
- 包装类转换成基本数据类型的过程我们称为:拆箱 unboxing
- Boolean的拆箱方法:booleanValue();
- Character的拆箱方法:charValue();
三、介绍Integer类:
3.1.Integer类的属性:
- 由API文档,可以看到通过IntegerInteger类中定义的属性,如提供了常量可以获取int的最大值和最小值:
- 最大值:Integer.MAX_VALUE
- 最小值:Integer.MIN_VALUE
- 当然,其它5个数字包装类也有对应的常量:
- byte最大值:Byte.MAX_VALUE
- byte最小值:Byte.MIN_VALUE
- short最大值:Short.MAX_VALUE
- short最小值:Short.MIN_VALUE
- 代码测试:
3.2.Integer的构造方法
- Integer(int value):Java9之后标记已过时,不建议使用
- 该构造方法可以将基本数据类型转换成包装类。这个过程我们称为装箱boxing
- Integer(String s):Java9之后标记已过时,不建议使用
- 该构造方法可以将字符串数字转换成包装类
- 字符串必须是整数数字,如果不是会出现异常:NumberFormatException
- 其它包装类的构造方法也是如此,例如Boolean的构造方法
- Boolean(boolean value)
- Boolean(String s)
3.3.Integer的常用方法
- static int compare(int x, int y); 比较大小
- static int max(int a, int b); 最大值
- static int min(int a, int b); 最小值
- static int parseInt(String s); 将字符串数字转换成数字类型。其它包装类也有这个方法:Double.parseDouble(String s)
- static String toBinaryString(int i); 获取数字二进制的字符串表示形式
- static String toHexString(int i); 获取数字十六进制的字符串表示形式
- static String toOctalString(int i); 获取数字八进制的字符串表示形式
- int compareTo(Integer anotherInteger); 比较大小,可见实现了Comparable接口
- boolean equals(Object obj); 包装类已经重写了equals()方法
- String toString(); 包装类已经重写了toString()方法
- int intValue(); 将包装类拆箱为基本数据类型
- static String toString(int i); 将基本数据类型转换成字符串
- static Integer valueOf(int i); 将基本数据类型转换成Integer
- static Integer valueOf(String s) 将字符串转换成Integer(这个字符串必须是数字字符串才行,不然出现NumberFormatException)
四、类型转换:
4.1.String、int、Integer三种类型之间的互相转换(String,double,Double转换原理相同)
4.2.代码测试:
String - > int
String - > Integer:
int - > Integer:
五、Java5新特性:自动装箱和自动拆箱
5.1.概念:
Java5之后为了开发方便,引入了新特性:自动拆箱和自动装箱
- 自动装箱::
Integer a = 10000; //程序在编译的时候,底层实际进行的是Integer a = new Integer(1000)
- 自动拆箱:int b = a; System.out.println(a + 1); 这里的a也会做自动拆箱
5.2.注意空指针异常:
- 以下代码出现空指针异常的原因是a在进行自动拆箱时,会调用 a.intValue()方法,因为a是null,访问实例方法会出现空指针异常,因此使用时应注意
Integer a = null;
System.out.println(a + 1);
5.3.整数型常量池
- [-128 ~ 127] : Java为这个区间的Integer对象创建了整数型常量池
- 也就是说如果整数没有超出范围的话,直接从整数型常量池获取Integer对象
- 以下是一个面试题:请说出它的输出结果:
Integer x = 128;
Integer y = 128;
System.out.println(x == y); // false
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true