ramilani12:
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
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.
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:
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.
(negrito meu)
ou visite a página:
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
Boa sorte gente.
fw