包装类介绍
所谓包装类,就是能够直接将简单类型的变量表示为一个类。
数值型包装类都继承至Number,而字符型和布尔型继承至Object。
包装类与基本类型:
为什么需要包装类?
1.首先,Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,为基本数据类型设计一个对应的类进行代表,这种方式增强了Java面向对象的性质。
2.基本数据类型,在实际使用时将存在很多的不便,很多地方都需要使用对象而不是基本数据类型。例如,在集合类中,我们是无法将int 、double等类型放进去的,因为集合的容器要求元素是Object类型。而包装类型的存在使得向集合中传入数值成为可能,包装类的存在弥补了基本数据类型的不足。
3.包装类还为基本类型添加了属性和方法,丰富了基本类型的操作。如当我们想知道int取值范围的最小值,我们需要通过运算,如下面所示,但是有了包装类,我们可以直接使用Integer.MAX_VALUE即可。
为什么要保留基本数据类型?
Java中用new关键字创建的对象是存储在堆里的,通过栈中的引用来使用这些对象,所以对象本身来说是比较消耗资源的。
对于经常用到的类型,如int等,如果每次使用这种变量的时候都需要new一个对象的话,就会比较笨重。所以Java提供了基本数据类型直接在栈内存中存储,更加高效。
包装类型与基本类型的异同
1. 在Java中,一切皆对象,但八大基本类型却不是对象
2. 声明方式的不同,基本类型无需通过new关键字来创建,而包装类型需new关键字
3. 存储方式及位置的不同,基本类型是直接存储变量的值保存在栈中能高效的存取,包装类型需要通过引用指向实例,具体的实例保存在堆中
4. 初始值的不同,包装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0
5. 使用方式的不同,比如与集合类合作使用时只能使用包装类型
包装类的特点
所有包装类都是使用final修饰的,不能被继承,包装类是不可变类,包装类的对象被创建后,它所包含的基本类型数据就不能改变。其中数值型对应的包装类都是继承自Number类,而字符型和布尔型继承至Object类。
包装类的使用
1.与基本数据类型的转换 拆箱 装箱
2.与字符串的转换
基本类型转换为String类型 使用String的valueof()方法或者使用 +"" 这里就涉及到数据类型的自动提升。
String类型转换为基本类型使用包装类;
3.基本类型包装类对象间的比较("==")