Opa galera tudo bem , procurei no fórum e no google mas não consegui localizar nada que me ajudasse,
assim estou tentando atualizar objetos de uma List que criei de Integers, como são objetos eu atualizando uma referencia, deveria modificar o mesmo
porem nao sei pq nao funciona alguem poderia me dizer aonde estou cometendo a burrada :roll: , valeu pessoal muito Obrigado.
Opa galera tudo bem , procurei no fórum e no google mas não consegui localizar nada que me ajudasse,
assim estou tentando atualizar objetos de uma List que criei de Integers, como são objetos eu atualizando uma referencia, deveria modificar o mesmo
porem nao sei pq nao funciona alguem poderia me dizer aonde estou cometendo a burrada :roll: , valeu pessoal muito Obrigado.
e ele modifica a referecia ^^
for(IntegernumeroAtual:estaClasse.pares){numeroAtual++;//veja que a referencia foi modificadaSystem.out.println(numeroAtual);}
o fato é que vc não muda o conteudo da lista, pois a lista tem a sua copia da referencia, enquanto o numeroAtual tem a dele... cada um tem uma cópia da referencia, alterar uma referencia não implica em alterar a outra.... c vc tivesse alterando o conteúdo do objeto ai tudo bem, porem Integer é um objeto de estado final, portanto é impossivel alterar seu conteúdo
acjZer0
pelo o que entendi ele cria um novo objeto quando uso tento incrementar o mesmo"++"???
Lavieri
sim cria um novo, e atribui o novo a “numeroAtual” …
na verdade existe varias coisas que o compilador faz implicitamente…
ele primeiro faz um outbox, ou seja… ele descompacta o Integer, usando numeroAtual.intValue() … depois ele pega esse int recebido e incrimenta ela em 1 unidade… depois ele cria um novo objeto integer, new Integer(numeroAtual.intValue()), e depois ele atribui a numeroAtual …
enfim seria o mesmo que escrever
numeroAtual++; // é o mesmo que
numeroAtual = new Integer(numerAtual.intValue() + 1); //o compilador faz isso implicitamente na instrução acima
acjZer0
(pelo que vi cria outro objeto sim)
pelo livro SCJP 5 (Kathy Sierra e Bert Bates)
assim funciona o Autoboxing :
//assim que funciona intenamente o Incremento de um Integer//exemplo Integer i =5;// i++Integery=newInteger(567);// cria uma Inetegrintx=y.intValue();// abre o mesmox++;// incrementay=newInteger(x);//fecha novamente//Com isso se cria um novo objeto por isso nao posso referenciar ao mesmo.