DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

2

Fundamentos do autoboxing e os métodos

Definição

  • Autoboxing: Conversão automática de um tipo primitivo para o seu equivalente encapsulador de tipo (como int para Integer).
  • Autounboxing: Extração automática do valor de um encapsulador de tipo para o seu tipo primitivo (como Integer para int).

Vantagens

  • Simplifica o código ao eliminar a necessidade de conversões manuais.
  • Reduz a probabilidade de erros ao lidar com tipos primitivos e encapsuladores.
  • Permite usar tipos primitivos em contextos onde objetos são esperados.

Exemplo de Autoboxing

Integer iOb = 100; // O valor int 100 é encapsulado automaticamente.

Enter fullscreen mode Exit fullscreen mode

Sem autoboxing (antes do JDK 5):

Integer iOb = new Integer(100);

Enter fullscreen mode Exit fullscreen mode

Exemplo de Autounboxing

int i = iOb; // O valor encapsulado em iOb é extraído automaticamente.

Enter fullscreen mode Exit fullscreen mode

Sem autounboxing (antes do JDK 5):

int i = iOb.intValue();

Enter fullscreen mode Exit fullscreen mode

Demonstração Básica

class AutoBox {
    public static void main(String[] args) {
        Integer iOb = 100; // Autoboxing
        int i = iOb; // Autounboxing

        System.out.println(i + " " + iOb); // Exibe: 100 100
    }
}

Enter fullscreen mode Exit fullscreen mode

Uso em Métodos
Autoboxing e Parâmetros de Método

static void m(Integer v) {
    System.out.println("m() received " + v);
}

public static void main(String[] args) {
    m(199); // 199 é encapsulado automaticamente em um Integer.
}

Enter fullscreen mode Exit fullscreen mode

Autounboxing e Valores de Retorno

static int m2() {
    return 10; // Retorna um int.
}

static Integer m3() {
    return 99; // Retorna um Integer (autoboxing de 99).
}

public static void main(String[] args) {
    Integer iOb = m2(); // Autoboxing do valor retornado (10).
    int i = m3(); // Autounboxing do Integer retornado (99).

    System.out.println("Return value from m2() is " + iOb);
    System.out.println("Return value from m3() is " + i);
}

Enter fullscreen mode Exit fullscreen mode

Exemplo Completo

class AutoBox2 {
    static void m(Integer v) {
        System.out.println("m() received " + v);
    }

    static int m2() {
        return 10;
    }

    static Integer m3() {
        return 99;
    }

    public static void main(String[] args) {
        // Autoboxing ao passar argumento
        m(199);

        // Autoboxing ao atribuir retorno de um int a um Integer
        Integer iOb = m2();
        System.out.println("Return value from m2() is " + iOb);

        // Autounboxing ao atribuir retorno de um Integer a um int
        int i = m3();
        System.out.println("Return value from m3() is " + i);

        // Autounboxing em operações
        iOb = 100;
        System.out.println("Square root of iOb is " + Math.sqrt(iOb));
    }
}

Enter fullscreen mode Exit fullscreen mode

Saída do Programa

m() received 199
Return value from m2() is 10
Return value from m3() is 99
Square root of iOb is 10.0

Enter fullscreen mode Exit fullscreen mode

Observações

Parâmetros e Retornos:

  • Argumentos primitivos passados para métodos que esperam encapsuladores sofrem autoboxing.
  • Valores retornados de métodos podem ser automaticamente encapsulados ou extraídos, conforme necessário.

Promoção de Tipos:

  • Durante o autounboxing, se necessário, o tipo encapsulado é promovido para atender aos requisitos do contexto (exemplo: Integer para double no Math.sqrt()).
  • Esses conceitos tornam o uso de tipos primitivos e objetos em Java mais intuitivo e eficiente.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more