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!