Java学习总结 ---------- 包装类
什么是包装类
定义:将基本数据类型封装到类中,即形成包装类。
包装类的作用
包装类的功能主要是将基本数据类型转化为引用数据类型,以便于操作。
- 使基本数据类型也可以被Object类接收。
- 基本数据类型也可以存放在集合中。
- 包装类中包含每种基本数据类型的相关属性如最大值,最小值等,以及一些操作方法。
基本数据类型与之对应的包装类
除了char和int的包装类需要单独记忆之外,其它的包装类名称都是将基本数据类型的第一个字母大写形成的。
装箱与拆箱
- 装箱:将基本数据类型变为与之对应的包装类对象。利用构造方法实习装箱处理。
- 将包装类对象变为与之对应的基本数据类型,利用…Value方法。
举例:
public class Test {
public static void main(String[] args) {
Integer i = new Integer(10); //手动装箱
int data = i.intValue(); //手动拆箱
System.out.println(data);
}
在JDK5.0之后,提供了自动拆装箱的机制,因此可以直接利用包装类对象直接进行运算。
自动拆装箱
举例:
public class Test {
public static void main(String[] args) {
Integer i = 10; //自动装箱
System.out.print(++i); //自动拆箱
}
包装类对象的“==”问题
public class Test {
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println(i.equals(j));
System.out.println(i == j);
}
输出结果:
解析:equals方法比较的是堆内存的内容,==比较的是堆内存的地址.仅此而已。
public class Test {
public static void main(String[] args) {
Integer i = 10;
Integer j = 10;
System.out.println(i == j);
Integer m = 200;
Integer n = 200;
System.out.println(m == n);
}
运行结果:
解析:对于自动装箱,形如Integer i = ? ,在-128到127的范围内赋值,底层会维护一个常量池,如常量池中有此对象则会复用,不再创建,但出了这个范围则不会复用。
包装类对象与基本类型的比较
public class Test {
public static void main(String[] args) {
int i = 200;
Integer j = 200;
Integer k = new Integer(200);
System.out.println(i == j);
System.out.println(i == k);
}
运行结果:
在混用包装类对象与基本数据类型时,包装类对象会首先进行拆箱,然后在进行使用。
字符串与基本数据类型的转换
在开发中,接受用户输入的信息一般都是字符串类型,因此必须考虑如何将字符串类型转换为对应的基本数据类型。
待续。。。