|
N�o, � por valor... Veja bem, se fosse por
refer�ncia, quando � chamado o new do array ele deveria alterar o de fora
tamb�m, pois se � uma refer�ncia, ele est� mexendo diretamente na posi��o de
mem�ria do objeto... No in�cio eu tbm achava q era por refer�ncia, tanto � que
estava defendo isso tbm... Mas com o exemplo do Leonardo fica bem claro que �
por valor, al�m do mais, se vc pesquisar no site da sun (java.sun.com), nos
tutoriais, se n�o me engano, l� encontrar� uma se��o dizendo que no java toda
passagem � por valor...
Pelo que entendi atrav�s do exemplo do Leonardo, o
valor passado � a posi��o na mem�ria do objeto e por isso altera o de fora tbm.
Mas se alteramos esta posi��o com o new, nada � replicado para fora e isso n�o
deveria acontecer se fosse passagem por refer�ncia...
A minha id�ia do funcionamento � mais ou menos a
seguinte:
public class
Class1
{
String s1;
public Class1()
{
this.s1 = "Valor 1"; //o valor inicial �
Valor 1
}
public void alteraObjeto(Class1 c1)
{
c1.s1 = "Valor 2";
}
}
public class Class2
{
public static void main(String [] args)
{
Class1 c1 = new Class1();
Class1 c2 = new Class1();
System.out.println(c1.s1);
c2.alteraObjeto(c1);
System.out.println(c1.s1);
}
}
Quando crio a v�riavel c1, ela se encontra, por exemplo na posi��o 1 da
mem�ria, e essa vari�vel aponta para a posi��o 100 que � onde se encontra o
objeto. Quando passo c1 para o m�todo a posi��o de c1 dentro do m�todo ser� 2 e
n�o mais 1, entretanto a posi��o dois tbm apontara para 100, logo qquer
altera��o feita no m�todo ser� vista por fora pois as duas vari�veis apontam
para o mesmo objeto. Entretanto, ao executar o new a posi��o que c1 (dentro do
m�todo) aponta deixar� de ser 100. Se fosse por refer�ncia, a posi��o dos dois
c1 seria a mesma e ao executar o new mudaria dentro e fora.
N�o sei se � assim que funciona internamente, mas foi o
que eu abstrai do exemplo... Veja que na chamada existem as duas vari�veis nos
registros de ativa��o, elas apenas apontam para o mesmo local...
Espero ter sido claro no exemplo e espero ter ajudado.
Rodrigo
|
- [java-list] Duvida comparacao de trio de ... Delmiro Fernandes
- Re: [java-list] Pergunta for Dummies Paulo Roberto Paro
- Re: [java-list] Pergunta for Dummies Daniel V. Gomes
- Re: [java-list] Pergunta for Dummies Daniel V. Gomes
- Re: [java-list] Pergunta for Dummies Binary Evolution
- Re: [java-list] Pergunta for Dummies Alan
- Re: [java-list] Pergunta for Dummies leonardo bruno
- Re: [java-list] Pergunta for Dummies rodklein
- Re: [java-list] Pergunta for Dummies leonardo bruno
- Re: [java-list] Pergunta for Dummies Alan
- Re: [java-list] Pergunta for Dummies Rodrigo
- Re: [java-list] Pergunta for Dummies Volnei
- Re: [java-list] Pergunta for Dummies Bruno Borges
- RE: [java-list] Pergunta for Dummies Eder Ribeiro Ferreira
- RE: [java-list] Pergunta for Dummies Jos� Fernandes Godoy Jr
- Re: [java-list] Pergunta for Dummies leonardo bruno
