
| 基本数据类型 | 包装类 |
|---|---|
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
其中Character 、Boolean的父类是Object,其余的父类是Number
Integer i = 10是错误的,必须要通过Integer i = new Integer(10)这样的语句来实现基本数据类型转换成包装类的过程;而在JDK1.5以后,Java提供了自动装箱的功能,自动装箱过程是通过调用包装类的valueOf()方法实现的,因此只需Integer i = 10这样的语句就能实现基本数据类型转换成包装类,这是因为JVM为我们执行了Integer i = Integer.valueOf(10)这样的操作。- public void test1() {
- Integer a = 10;
- //等价于 Integer a = Integer.valueOf(10);
- }
intValue()、doubleValue()等转型方法。自动拆箱过程是通过调用包装类的 xxxValue()方法实现的- public void test1() {
- int a = new Integer(10);
- //等价于int a = new Integer(10).intValue();
- }
既然知道了装箱和拆箱,那么下面的代码,我们就可以很明白的分析出来为什么会报空指针的异常了:
- public void test1() {
- Integer a = null;
- int b = a;
- }

前面已经讲解了基本数据类型以及包装类之间的相互转换,即自动装箱和拆箱;下面看看基本数据类型与String类之间的转换、String类与包装类之间的转换。
- public void test1() {
- int a = 3;
- String s = String.valueOf(a);
- System.out.println(s.getClass());
- //class java.lang.String
- }

- public void test2() {
- String s = "12";
- int a = Integer.parseInt(s);
- }

- public void test3() {
- String s = "12";
- Integer a = new Integer(s);
- System.out.println(a.getClass());
- //class java.lang.Integer
- }
-
- public void test4() {
- Integer a = new Integer(12);
- String s = a.toString();
- String s1 = Integer.toString(a);
- System.out.println(s.getClass());
- System.out.println(s1.getClass());
- //class java.lang.String
- }
- 复制代码
试着写一写,看看自己会不会:
- @Test
- public void test5() {
- Integer i = new Integer(1);
- Integer j = new Integer(1);
- System.out.println(i == j);
- Integer m = 1;
- Integer n = 1;
- System.out.println(m == n);
- Integer x = 128;
- Integer y = 128;
- System.out.println(x == y);
- }
- 复制代码
输出结果:false、true、false
用一张图片来收尾~
