包装类介绍

拓展阅读: Java8新特性

1.包装类的作用

Java是一种面向对象的编程语言,却存在几个不具有对象特征的异类;他们不能像对象一样进行属性和方法的调用,也无法进行相互之间的对象化处理。包装类的存在就是为了解决这些问题,让他们能够像对象一样进行交互。

通过包装类可以让基本数据类型获取对象一样的特征,行使对象相关的权益。


2.基本数据类型和包装类的对应


3.包装类常用方法

3.1)Java中所有的包装类都是存放在【java.lang】这个包里面的;

3.2)所有的包装类都是final修饰的,即是不能被继承的,是没有子类的;

3.3)基本数据类型分为三大类:数值型、字符型、布尔型;他们的直接父类不同;

所有的数值型都是继承Number类的;

字符类型和布尔类型的直接父类是Object类;

3.4)Integer类还实现了Comparable接口,关于这个接口后续再深入了解

3.5)Integer的属性和方法

(对于Integer中的方法,可以看下API中的描述,自测一下,简单了解即可)

基本数据类型和包装类之间的转换

1.装箱和拆箱的简单示例程序

装箱和拆箱:基本数据类型和对应包装类之间的转换

装箱和拆箱都有自动和手动两种方式,以下为简单示例:这篇博客主要掌握装箱和拆箱的基本操作即可

 
public class WrapTestOne {
	public static void main(String[] args) {
 
		// 装箱:基本数据类型转换成包装类
		// 1.自动装箱
		int t1 = 2;
		Integer t2 = t1; // 编译器会把t1中的数据提取出来,通过实例化的方式,来构成t2对象
		// 2.手动装箱
		Integer t3 = new Integer(t1);
 
		// 测试
		 System.out.println(t2);   // Integer类的同String()方法是输出其数据值
		 System.out.println(t3);
 
		 /******************************************************/
 
		 // 拆箱:把包装类转换成基本数据类型
		 // 1.自动拆箱
		 int t4 = t2;
		 // 2.手动开拆箱
		 int t5 = t2.intValue(); // intValue()方法的作用:把Integer对象的值转换为对应整型数据值
		 double t6 = t2.doubleValue();  // doubleValue()方法把Integer对象的值转换为对应double数据值
		 // 还有其他类似于intValue()方法和doubleValue()方法的方法
		// 测试
				 System.out.println(t2);   // Integer类的同String()方法是输出其数据值
				 System.out.println(t4);
				 System.out.println(t5);
				 System.out.println(t6);
 
	}
 
}

2.装箱和拆箱分析

下图提供了一种新的自动装箱的方法:通过valueOf()方法。

相较来看,自动装、拆箱,表面是自动转换的方式(帮助开发者忽略了底层的调用)

……………………………………………………

1.基本数据类型和包装类的区别

这部分主要是加强对包装类的整体感官

1.基本数据类型和字符串之间的相互转换

public class WrapTestTwo {
 
	public static void main(String[] args) {
 
		// 一:基本数据类型转成字符串:通过包装类的toString方法
		int t1 = 2;
		String s = Integer.toString(t1);
		System.out.println(s);

		// 二:字符串转换成基本数据类型
		// 第一种:通过包装类的parse方法
		int t3 = Integer.parseInt(s);
		System.out.println(t3);
		// 第二种:先通过Integer.valueOf()把字符串转成包装类,然后再自动拆箱成基本数据类型
		int t4 = Integer.valueOf(s);
		System.out.println(t4);
 
	}
 
}


2.包装类对象的初始值

其包装类的默认初始值为null。


3.包装类对象间的比较

……………………………………………………

……………………………………………………

原因解释:

在执行Integer four = 100;这个自动装箱操作时,背后实际执行的是 Integer four = Integer.valueOf(100);

Java为了提高运行效率,在Integer.valueOf()这个方法执行的过程中,提供了一个类似于常量数组的常量缓存区(或称对象池);

即在实际中:执行Integer three = 100;时,其会在缓存区中查找是否有100这个对象,此时还没有,所以这个时候执行的是:Integer three = new Integer(100);即会隐式的使用new关键字去实例化一个数值为100的对象

在执行Integer four = 100;时,缓冲区中一查,发现有数值为100的对象,即这个时候拿过来直接用就行了,,,即这个时候four直接指向这个对象;即这个时候three和four指向了同一个对象,二者的值是一样的。




4.附带内容

……………………………………………………

……………………………………………………

这个主要是看下char类型

……………………………………………………、

包装类的常见问题

包装类的常见问题(单纯罗列,仅供浏览)





下图说的会引发空指针异常的情况很重要: