[quote=ramilani12][quote=Dieval Guizelini]Complementando…
o Java passa parâmetros SOMENTE por valor.
visite este link:
http://www.guj.com.br/posts/list/46065.java#241584
fw[/quote]
Errata a passagem de parametros em Java é pela cópia da referência isso se refere a objetos.
Já tipos primitivos(int , float , long e etc) a passagem por valor.[/quote]
ramilani12, você está equivocado com relação a este conceito.
Cópia de referência não é passagem de parametros por referência.
Veja esta situação:
1. public void metodoX() {
2. ClasseQualquer obj = new ClasseQualquer();
3. ClasseQualquer obj2 = obj;
4. metodoY( obj );
5. if( obj == obj2 )
6. System.out.println("O objeto é o mesmo");
7. }
8.
9. public void metodoY(ClasseQualquer param1 ) {
10. param1 = new ClasseQualquer();
11. }
Observe que na linha 2, a variável obj é mantida no stack e a instância (o objeto propriamente dito) no heap. A variável possui o endereço do objeto no heap.
Na linha 3, fazemos com que o endereço de obj seja compartilhado com obj2. Ou seja, obj2 aponta para o mesmo endereço que obj.
na linha 4 passamos o objeto como parâmetro certo?
Errado, o que estamos passando é a referência ao objeto. Ou seja, tudo que ocorrer com o objeto representado por param1 estará ocorrendo também com o obj, isto porque é o mesmo objeto.
Mas não podemos considerar isto como passagem por referência, porque simplesmente não podemos “realocar” este objeto. No exemplo, a nova instância (criada na linha 10) ficará a disposição do gc assim que o método encerrar. Pela mesma razão não é possível, por exemplo, criar um método que “amplie” um array. Porque a nova array será um novo objeto e ficará a disposição do gc assim que o método for finalizado.
Se preferir a documentação oficial da SUN, veja este trecho:
[quote]Reference data type parameters, such as objects, are also passed into methods by value. This means that when the method returns, the passed-in reference still references the same object as before. However, the values of the object’s fields can be changed in the method, if they have the proper access level. [/quote] (negrito meu)
ou visite a página:
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
Boa sorte gente.
fw