nao sei se isto é usado em java ou orientação a objetos, mas precisava saber o seguinte:
tenho uma classe A q possui um atributo int.
e essa classe A instancia uma classe B, e passa esse atributo int para a B.
a classe B faz modificações no atributo int.
gostaria q esse atributo sofresse modificacoes na classe A.
Em C eu passaria o endereço do int.
Todas explicações serão bem vindas
muito obrigado pela atenção
Em Java, tudo eh passado por copia (“por valor”, dependendo da traducao).
J
jesus
pcalcado
Explicando [talvez] melhor:
Como cvex, nosso bot, disse, tudo é passado por cópia em java. VOcê recebe uma cópia do que o objeto passa, mas este comportamento é um pouco diferente dependendo do que você está passando.
Uma referência à um objeto é copiada, logo você tem uma segunda referência para o mesmo objeto [mudando a primeira não afeta a segudna, e vice-versa].
Um tipo primitivo é simplesmente copiado. Ou seja, se o valor era 1, você recebe outro 1. Não há referências para tipos primitivos…
Logo: no way
[]s
Bani
Acho que você se confundiu no parênteses… as duas referências apontam para o mesmo objeto, logo mudando a primeira afeta a segunda.
E é justamente assim que se simula a “passagem por referência”. São duas referências diferentes com o mesmo valor, logo apontando para o mesmo endereço de memória.
J
jesus
blz, jah tinha suspeitado disso
e seu eu usar o objeto Integer???
poderei modifica-lo???
J
jesus
Acho que você se confundiu no parênteses… as duas referências apontam para o mesmo objeto, logo mudando a primeira afeta a segunda.
E é justamente assim que se simula a “passagem por referência”. São duas referências diferentes com o mesmo valor, logo apontando para o mesmo endereço de memória.
interessante, quando eu faço um system.print, no objeto A é diferente do objeto B…
^???
Bani
Se A e B foram duas referências para o mesmo objeto… é o mesmo objeto
Acho que é mais fácil você dar um exemplo de código do que você está tentando fazer.
pcalcado
Acho que você se confundiu no parênteses… as duas referências apontam para o mesmo objeto, logo mudando a primeira afeta a segunda.
E é justamente assim que se simula a “passagem por referência”. São duas referências diferentes com o mesmo valor, logo apontando para o mesmo endereço de memória.
Exatamente, Bani, mudando a primeira referência não muda a segunda. A referência é o ‘ponteiro’, não o ‘alvo’, logo você pode mudar o lugar para onde ela referencia sem modificar a outra.
Eu entendi o que você quis dizer, eu é que acabei te confundindo com um texto mal-redigido
[]s
Bani
“pcalcado”:
Exatamente, Bani, mudando a primeira referência não muda a segunda. A referência é o ‘ponteiro’, não o ‘alvo’, logo você pode mudar o lugar para onde ela referencia sem modificar a outra.
Ah tá, agora entendi também
Rafael_Steil
“jesus”:
blz, jah tinha suspeitado disso
e seu eu usar o objeto Integer???
poderei modifica-lo???
Nao, porque Integer eh imutavel. Voce vai ter que retornar o valor pelo metodo mesmo.
Rafael
sergiolopes
“Rafael Steil”:
Nao, porque Integer eh imutavel. Voce vai ter que retornar o valor pelo metodo mesmo.
Rafael
ou encapsular esse atributo em uma classe com getter/setter. mas dependendo do caso, eh preferivel devolver o valor mesmo.
J
jesus
vou colocar entao o codigo, e gostaria da ajuda de todos.