1、Java 包装类
Java有8种基本数据类型:整型(byte
、short
、int
、long
)、浮点型(float
、double
)、布尔型boolean
、字符型char
,相对应地,Java提供了8种包装类Byte
、Short
、Integer
、Long
、Float
、Double
、Boolean
、Character
。包装类创建对象的方式就跟其他类一样。包装类提供了一种使用原始数据类型作为对象的方法。
下表是原始类型和对应的包装类:
原始数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
有时必须使用包装类,如在使用Collection
对象时,例如,作为ArrayList
,其中不能使用基本类型(列表只能存储对象):
例如:
ArrayList<int> myNumbers = new ArrayList<int>(); // 报错
ArrayList<Integer> myNumbers = new ArrayList<Integer>(); // 正常创建方法
2、创建包装类对象
要创建包装类对象,需要使用包装类而不是原始类型。要获取值,可以只打印输出对象:
例如:
public class Main { public static void main(String[] args) { Integer myInt = 8; Double myDouble = 8.99; Character myChar = 'A'; System.out.println(myInt); System.out.println(myDouble); System.out.println(myChar); } }
由于使用的是包装类对象,因此可以使用某些方法来获取有关特定对象的信息。
例如,以下方法用于获取与
相应的包装对象:intValue()
,byteValue()
,shortValue()
,longValue()
,floatValue()
,doubleValue()
,charValue()
,booleanValue()
。
下面示例将输出与以上示例相同的结果:
例如:
public class Main { public static void main(String[] args) { Integer myInt = 2; Double myDouble = 9.99; Character myChar = 'A'; System.out.println(myInt.intValue()); System.out.println(myDouble.doubleValue()); System.out.println(myChar.charValue()); } }
另一个有用的方法是toString()
方法,该方法用于将包装器对象转换为字符串。
在下面的示例中,我们将Integer
转换为String
,并使用String对象的length()
方法输出字符串的长度:
例如:
public class Main { public static void main(String[] args) { Integer myInt = 100; String myString = myInt.toString(); System.out.println(myString.length()); } }
3、装箱和拆箱
基本数据类型转换为包装类的过程称为装箱,如把 int
包装成 Integer
类的对象;包装类变为基本数据类型的过程称为拆箱,如把 Integer
类的对象重新简化为 int
。
例如,
public class Main { public static void main(String[] args) { int m = 100; Integer obj = m; // 自动装箱 int n = obj; // 自动拆箱 System.out.println("n = " + n); Integer obj1 = 100; System.out.println("obj等价于obj1返回结果为" + obj.equals(obj1)); } }
4、包装类与集合类
在集合类(如 List
、Set
、Map
)中只能存储对象,不能存储基本数据类型,因此在存储基本数据类型时,必须使用其对应的包装类。
import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(10); // 自动装箱:int -> Integer list.add(20); list.add(30); // 遍历集合并输出 for (Integer i : list) { System.out.println(i); } } }
5、Boolean
包装类的特殊性
Boolean
是 Java 中的一个特殊包装类,因为它的值只能是 true
或 false
,而不能是其他任何值。它还提供了 parseBoolean
方法来将字符串转换为 boolean
。
public class Main { public static void main(String[] args) { Boolean boolObj = Boolean.valueOf("true"); boolean b = boolObj.booleanValue(); System.out.println("Boolean 对象: " + boolObj); System.out.println("转换后的 boolean: " + b); } }