Atribuir um objeto a um primitivo. Agora isso ta criando um objeto no heap? Porque pelo que to vendo acontece um unboxing de Integer pra int e a variavel “num” continua no seu estado primitivo.
Atribuir um objeto a um primitivo. Agora isso ta criando um objeto no heap? Porque pelo que to vendo acontece um unboxing de Integer pra int e a variavel “num” continua no seu estado primitivo.
Criar um objeto com certeza esta criando porque voce utilizou o new.
L
Leonardo3001
O que acontece é o seguinte:
A expressão:
intnum=newInteger(10);
é equivalente a
intnum=newInteger(10).intValue();
Ou seja, você cria o objeto, mas ela não é referenciada pela variável num, que recebe apenas o resultado de um unboxing. O objeto não é referenciado por ninguém, e é elegível à coleta tão logo a linha seja executada.
evertonsilvagomesjav
Leonardo3001:
O que acontece é o seguinte:
A expressão:
intnum=newInteger(10);
é equivalente a
intnum=newInteger(10).intValue();
Ou seja, você cria o objeto, mas ela não é referenciada pela variável num, que recebe apenas o resultado de um unboxing. O objeto não é referenciado por ninguém, e é elegível à coleta tão logo a linha seja executada.
fino do grão hehe, vlw!!!
Marky.Vasconcelos
Voce pode fazer isso apenas no Java 1.5>, foi quando colocaram os auto-wrapers(que é isso que voce fez).
new Integer cria um novo objeto em memoria.
Integer.valueOf retorna do pool.
Escolha o que pode ser melhor para voce.
robsontorres
esse recurso se chama autoboxing e entrou no java 5. ele permite que voce trate primitivos (int) e wrappers (Integer) de forma semelhante.
mas como disse o amigo Marky, cuidado que existe uma magica por baixo. sempre que vc tratar um objeto como primitivo, o java faz Integer.valueOf(valor) pra voce. e sempre que vc tratar o primitivo como objeto, ele faz objeto.intValue()
vc pode ter problemas serios de performance se nao souber usar o autoboxing direito, alem de tomar uns NullPointerException em lugares aparentemente impossiveis