English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos de Java

Java Controle de Fluxo

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Fila (Queue)

Java Mapa (Map)

Java Conjunto (Set)

Java Entrada e Saída (I)/O)

Java Reader/Writer

Outros tópicos do Java

Classes Wrappers Java

Neste tutorial, vamos aprender sobre as classes de embalagem do Java (Wrapper) com exemplos.

As classes de embalagem no Java são usadas para converter tipos primitivos (int, char, float, etc.) em seus respectivos objetos.

8Cada um dos tipos básicos tem um correspondente classe de embalagem.

Tipo primitivoClasse de embalagem
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

Converter tipos básicos em objetos de embalagem

Ainda podemos usar o método valueOf() para converter tipos primitivos em seus respectivos objetos.

Exemplo1:Tipo primitivo do wrapping

class Main {
  public static void main(String[] args) {
    //Criar tipo primitivo
    int a = 5;
    double b = 5.65;
    //Converter para wrapping
    Integer aObj = Integer.valueOf(a);
    Double bObj = Double.valueOf(b);
    if(aObj instanceof Integer) {
      System.out.println("Criar um objeto Integer.");
    }
    if(bObj instanceof Double) {
      System.out.println("Criar um objeto Double.");
    }
  }
}

Resultados de saída

Criar um objeto Integer.
Criar um objeto Double.

No exemplo acima, usamos o método valueOf() para converter tipos primitivos para objetos.

Aqui, usamos o operador instanceof para verificar se o objeto gerado pertence ao tipo Integer ou Double.

Mas, o compilador Java pode converter diretamente os tipos primitivos para os objetos correspondentes. Por exemplo,

int a = 5;
//Converter para objeto
Integer aObj = a;
double b = 5.6;
//Converter para objeto
Double bObj = b;

Este processo é conhecido comoEncapsulamento automático.Para obter mais informações, acesseAutoboxing e Unboxing Java.

Atenção:também podemos usar o construtor de classes wrapping (Wrapper) para converter tipos primitivos para objetos wrapping.Mas no Java 9Após isso, não se usa mais o construtor.

Converter wrapping para tipo primitivo

Para converter um objeto para um tipo primitivo, podemos usar o método de valor correspondente de cada classe wrapping (intValue(), doubleValue(), etc.).

Exemplo2:Converter objetos wrapping para tipos primitivos

class Main {
  public static void main(String[] args) {
    //Criar objetos de classes wrapping
    Integer aObj = Integer.valueOf(23);
    Double bObj = Double.valueOf(5.55);
    //Converter para tipo primitivo
    int a = aObj.intValue();
    double b = bObj.doubleValue();
    System.out.println("O valor de a: ") + a);
    System.out.println("O valor de b: ") + b);
  }
}

Resultados de saída

O valor de a: 23
O valor de b: 5.55

No exemplo acima, usamos os métodos intValue() e doubleValue() para converter os objetos Integer e Double para os tipos primitivos correspondentes.

Mas, o compilador Java pode converter automaticamente os objetos para os tipos primitivos correspondentes. Por exemplo,

Integer aObj = Integer.valueOf(2);
//Convertendo para o tipo int
int a = aObj;
Double bObj = Double.valueOf(5.55);
//Convertendo para o tipo double
double b = bObj;

Este processo é conhecido comoUnboxing.Para obter mais informações, acesseAutoboxing e Unboxing Java.

Vantagens das Classes Wrappers

  • Às vezes, em Java, podemos precisar usar objetos em vez de tipos de dados primitivos. Por exemplo, ao usar conjuntos.

    // Erro
    ArrayList<int> list = new ArrayList<>();
    //Funcionamento normal
    ArrayList<Integer> list = new ArrayList<>();

    Neste caso, as classes wrappers podem nos ajudar a usar tipos de dados primitivos como objetos.

  • Podemos armazenar valores nulos em objetos de wrappers. Por exemplo,

    //Será gerado um erro
    int a = null;
    // Funcionamento normal
    Integer a = null;

AtençãoOs tipos primitivos são mais eficientes que os tipos de objeto correspondentes. Portanto, sempre é recomendado usar tipos primitivos quando a eficiência é necessária.