classValHold{publicinti=10;}publicclassObParm{publicstaticvoidmain(Stringargv[]){ObParmo=newObParm();o.amethod();}publicvoidamethod(){inti=99;ValHoldv=newValHold();v.i=30;another(v,i);System.out.print(v.i);}//End of amethodpublicvoidanother(ValHoldv,inti){i=0;v.i=20;ValHoldvh=newValHold();v=vh;System.out.print(v.i);System.out.print(i);}//End of another}
nesta linha está se instanciando outro objeto e atribuindo ele a variável v,
portanto todas as mudanças aqui não serão refletidas no objeto passado como parâmetro, pois este referencia uma outra área de memória
ValHold vh = new ValHold();
v = vh;
portanto quando sair do metodo another(ValHold v, int i) irá imprimir 20 que foi a última atualizaçao feita na referência do primeiro objeto.
v.i = 20;
P
Panga
vc está certo, mas eu naum consegui entender isso de jeito nenhum…
qual a ordem q é impresso isso? eu achei q era a seguinte: System.out.print(v.i);// de another System.out.print(i); // de another System.out.print( v.i )// de amethod
Valew.
ricardolecheta
a ordem é essa mesmo; System.out.print(v.i);// de another -> imprime: 10 System.out.print(i); // de another -> imprime: 0 System.out.print( v.i )// de amethod -> imprime: 20
a linha v.i = 20; altera o objeto original…
o segredo está nesta linha:
ValHold vh = new ValHold();
quando vc faz isso está criando um novo objeto em um outro local de memória, portanto daqui para frente qualquer alteração não refletirá no objeto original, pois eles apontam para locais diferentes de memória…
qualquer dúvida pergunte…
P
Panga
Agora entendi, não é tão complicado assim, mas me confundiu muito… :oops:
Valew.
soaresinfo
como seria feita para que “vh” alterasse o objeto “v” original?
P
Panga
Como o ricardo falow:
ValHold vh = new ValHold();
v = vh;
nesse momento um novo objeto é criado e v passa a apontar para esse novo objeto, acho q se fosse ao contrario:
vh = v
o “vh” estaria apontando para o v antigo, aí acho q aconteceria isso q vc perguntou.
Me descupa se eu estiver errado, mas tenho muito oq aprender ainda.
Falow.
C
Cyber_Love
“ricardolecheta”:
imprime: 10020
nesta linha está se instanciando outro objeto e atribuindo ele a variável v,
portanto todas as mudanças aqui não serão refletidas no objeto passado como parâmetro, pois este referencia uma outra área de memória
ValHold vh = new ValHold();
v = vh;
portanto quando sair do metodo another(ValHold v, int i) irá imprimir 20 que foi a última atualizaçao feita na referência do primeiro objeto.
v.i = 20;
:D
Desde quando vc instancia um objeto???
Bani
Tá certo que o que você instancia é a classe, e aí obtém um objeto como resultado disso, mas ninguém fica dizendo "instanciando-se a classe obtém-se outro objeto…"
Em linguagem de programador, quando alguém diz “instanciar um objeto” já fica implícito que está falando “instanciar uma classe para obter um objeto”.
O verbo instanciar requer um objeto direto, mas não tenho certeza se esse objeto tem que ser a causa da ação. Acho que não tem problema ser a consequencia.
C
Cyber_Love
“Bani”:
Tá certo que o que você instancia é a classe, e aí obtém um objeto como resultado disso, mas ninguém fica dizendo "instanciando-se a classe obtém-se outro objeto…"
Em linguagem de programador, quando alguém diz “instanciar um objeto” já fica implícito que está falando “instanciar uma classe para obter um objeto”.
O verbo instanciar requer um objeto direto, mas não tenho certeza se esse objeto tem que ser a causa da ação. Acho que não tem problema ser a consequencia.
Acho que com certeza se vc falar para um programador “Instanciar um Objeto” ele vai dizer que Objetos naum saum instanciados…
Por isso que vc instancia a classe para ser usada no objeto, ou seja, o objeto eh uma instancia de uma classe
L
leo.dep
cyber,
pelo amor de deus…
pra que criar discussao, tanto faz a forma de falar instanciar um objeto ou uma classe o importante é saber programar e ajudar aos que precisam, como o Bani fez…
C
Cyber_Love
“leo.dep”:
cyber,
pelo amor de deus…
pra que criar discussao, tanto faz a forma de falar instanciar um objeto ou uma classe o importante é saber programar e ajudar aos que precisam, como o Bani fez…
Sem grito manow… so estava adicionando uma informação pra naum sair dando gafes por ai…
Quando fiz um curso o amigo meu falou assim pro prof:
“professor mas quando eu instancio o objeto a inner class naum eh carregada primeiro”;
Ai o professor pagou o maior sabão pro moleke, pois ficou meio sem nexo ate na resposta dele…
L
leo.dep
Ai manow,
so to te falando para nao criar polemica, deu o seu recado e pronto nao precisa ficar de blablablablablabalbla, cabe a pessoa aceitar a sua resposta e pronto…