Java-包装类
在 Java 编程中,我们经常会遇到基本数据类型与对象之间的转换问题,而包装类(Wrapper Class)正是解决这一问题的关键。本文将详细介绍 Java 包装类的概念、作用、常用方法及实际应用场景。
一、什么是包装类
Java 是一门面向对象的编程语言,但它同时保留了 8 种基本数据类型(byte、short、int、long、float、double、char、boolean),这些基本类型不是对象,不具备对象的特性。为了在面向对象编程中使用基本数据类型,Java 提供了对应的包装类,将基本数据类型包装成对象。
8 种基本数据类型对应的包装类如下:
- byte → Byte
- short → Short
- int → Integer
- long → Long
- float → Float
- double → Double
- char → Character
- boolean → Boolean
其中,除了 Character 和 Boolean,其他包装类都继承自 Number 类。
二、包装类的主要作用
- 类型转换:实现基本数据类型与字符串之间的转换
- 泛型支持:泛型不能使用基本数据类型,必须使用包装类
- 集合框架:集合中只能存储对象,需要使用包装类存储基本数据类型
- 提供实用方法:包装类提供了许多操作基本数据类型的实用方法
三、包装类的使用
1. 装箱与拆箱
- 装箱:将基本数据类型转换为对应的包装类对象
- 拆箱:将包装类对象转换为对应的基本数据类型
Java 5 之后引入了自动装箱(Auto-Boxing)和自动拆箱(Auto-Unboxing)机制,简化了转换操作。
package 包装类;public class Test {public static void main(String[] args) {// 手动装箱Integer num1 = new Integer(10);// 自动装箱Integer num2 = 20;// 手动拆箱int value1 = num1.intValue();// 自动拆箱int value2 = num2;System.out.println("num1: " + num1);System.out.println("num2: " + num2);System.out.println("value1: " + value1);System.out.println("value2: " + value2);}
}
2. 常用方法
以 Integer 为例,介绍包装类的常用方法:
public class IntegerDemo {public static void main(String[] args) {// 字符串转整数int num = Integer.parseInt("123");// 整数转字符串String str = Integer.toString(123);// 获取最大值和最小值System.out.println("int最大值: " + Integer.MAX_VALUE);System.out.println("int最小值: " + Integer.MIN_VALUE);// 进制转换System.out.println("10的二进制: " + Integer.toBinaryString(10));System.out.println("10的八进制: " + Integer.toOctalString(10));System.out.println("10的十六进制: " + Integer.toHexString(10));}
}
四、注意事项
- 缓存机制:对于 Integer,在 - 128 到 127 之间的数值会被缓存,超过这个范围则会创建新对象
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // trueInteger c = 128;
Integer d = 128;
System.out.println(c == d); // false
- 空指针异常:自动拆箱时如果包装类对象为 null,会抛出 NullPointerException
Integer num = null;
int value = num; // 抛出NullPointerException
- 比较运算:使用
==
比较包装类对象时,比较的是地址;使用equals()
方法比较的是值
五、总结
包装类在 Java 编程中扮演着重要角色,它弥补了基本数据类型不能作为对象使用的不足。掌握自动装箱与拆箱机制、理解缓存策略以及熟悉常用方法,能够帮助我们更高效地进行 Java 开发。