Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Unboxing

Não entendi a diferença de usar o doubleValue, intValue e etc, ao invés de chamar direto a referência.

        Double ref = Double.valueOf(3.2);
        System.out.println(ref.doubleValue()); // 3.2
        System.out.println(ref);// 3.2

Já que ref é uma referência, ao dar print nele, não deveria mostrar a referência na memória?

E qual a diferença de pegar os valores apenas com ref ou com ref.doubleValue?

1 resposta
solução!

Olá Rafael, tudo bem com você?

A classe Double é uma representação de um número de ponto flutuante do tipo primitivo double, trazendo as facilidades que uma classe traz: ter métodos, criar estruturas de dados com Generics, etc.

Ao utilizar o valor da variável ref dentro de um System.out.println(), a JVM é inteligente o suficiente para usar o valor que o objeto do tipo Double guarda, nesse caso 3.2, através do unboxing automático. No entanto, o Java ainda trata essa variável como uma referência para um objeto do tipo Double. Ao utilizar o método doubleValue(), é retornado um número no tipo primitivo double, e não mais um objeto do tipo Double, ou seja, não é possível utilizar métodos da classe Double, nem criar listas com o retorno desse método.

Sendo assim, a diferença se dá muito mais com o objetivo que se tenta alcançar com o uso da variável: caso eu precise criar uma Lista ou outra estrutura de dados para guardar valores do tipo double, só é possível com a classe Double. Caso seja necessário apenas o valor double, pode se utilizar tanto uma variável double ou o doubleValue() (a variável do tipo primitivo double ocupa menos espaço na memória).

Em geral, sempre faz sentido utilizar o doubleValue() quando você precisa apenas do valor double do objeto e não vai realizar nenhuma manipulação possível apenas a partir dos métodos da classe Double.

Fico à disposição em caso de dúvidas.

Um grande abraço e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!