Uma classe wrapper em Java é uma classe especial usada para agrupar tipos de dados primitivos (como int, double, char, etc.) em objetos. A função da classe wrapper é fazer com que o tipo de dado básico tenha as características do objeto, como passar como parâmetro para uma classe ou método genérico, chamar o método do objeto, armazená-lo em uma coleção, etc. .
Java fornece uma classe wrapper correspondente para cada tipo de dados básico, conforme mostrado na tabela a seguir:
tipo de dados básico | Embalagem |
---|---|
byte | Byte |
curto | Curto |
int | inteiro |
longo | Longo |
flutuador | Flutuador |
dobro | Dobro |
Caracteres | Personagem |
boleano | boleano |
Para usar uma classe wrapper, primeiro você precisa criar um objeto da classe wrapper. Existem duas maneiras de criar um objeto da classe wrapper: uma é usar o construtor e a outra é usar o método estático valueOf. Por exemplo, aqui estão duas maneiras de criar um objeto Integer:
// 使用构造方法
Integer i1 = new Integer(10); // 创建一个值为 10 的 Integer 对象
// 使用静态方法 valueOf
Integer i2 = Integer.valueOf(20); // 创建一个值为 20 的 Integer 对象
Depois que o objeto da classe wrapper é criado, os métodos da classe wrapper podem ser usados para manipular os tipos de dados básicos. A classe wrapper fornece alguns métodos comumente usados, conforme mostrado na tabela a seguir:
nome do método | ilustrar |
---|---|
intValue | Retorna o valor int correspondente ao objeto |
doubleValue | Retorna o valor duplo correspondente ao objeto |
charValue | Retorna o valor char correspondente ao objeto |
valor booleano | Retorna o valor booleano correspondente ao objeto |
compareTo | Compara o tamanho deste objeto com outro objeto, retornando um número negativo, zero ou positivo |
é igual a | Determina se este objeto é igual a outro objeto |
Retorna uma representação de sequência de caracteres deste objeto | |
parseXXX | Analisa uma string em tipos de dados básicos correspondentes, como parseInt, parseDouble, etc. |
Converter um tipo de dados primitivo ou string no objeto de classe wrapper correspondente |
Por exemplo, aqui estão alguns exemplos usando métodos de classe wrapper:
// 使用 intValue 方法
int i3 = i1.intValue(); // 将 i1 对象转换成 int 值
System.out.println(i3); // 输出 10
// 使用 compareTo 方法
int i4 = i1.compareTo(i2); // 比较 i1 和 i2 的大小
System.out.println(i4); // 输出 -1
// 使用 parseDouble 方法
double d1 = Double.parseDouble("3.14"); // 将字符串 "3.14" 解析成 double 值
System.out.println(d1); // 输出 3.14
// 使用 valueOf 方法
Boolean b1 = Boolean.valueOf(true); // 将 boolean 值 true 转换成 Boolean 对象
System.out.println(b1); // 输出 true
Além de usar métodos de classes wrapper, você também pode usar autoboxing e autounboxing para simplificar seu código. Auto-boxing refere-se à conversão automática de tipos de dados básicos em objetos de embalagem correspondentes; unboxing automático refere-se à conversão automática de objetos de embalagem em tipos de dados básicos correspondentes. Por exemplo, aqui estão alguns exemplos usando autoboxing e autounboxing:
// 自动装箱
Integer i5 = 30; // 相当于 Integer i5 = Integer.valueOf(30);
Double d2 = 3.14; // 相当于 Double d2 = Double.valueOf(3.14);
// 自动拆箱
int i6 = i5; // 相当于 int i6 = i5.intValue();
double d3 = d2; // 相当于 double d3 = d2.doubleValue();
// 自动装箱和自动拆箱可以用在运算中