Objetos passados como parametros

5 respostas
A

Saudações pessoal,

Estou com uma dúvida e gostaria de saber se podem me ajudar.
Qndo passamos um objeto como parametro de um método, essa passagem está sendo feita por referencia ou por valor? Por quê?
Obrigado!

5 Respostas

kaique

Toda passagem de parâmetros, em Java, acontece através de cópia. no caso de tipos primitivos, uma cópia do valor é passado. no caso de objetos, uma cópia da referência dele é passada.

[]'s.

vanzella

allanft, se o argumento do método não for um tipo primitivo, Java sempre usara a referência, creio eu que para reduzir o desperdicio de memória.

ViniGodoy
vanzella:
allanft, se o argumento do método não for um tipo primitivo, Java sempre usara a referência, creio eu que para reduzir o desperdicio de memória.

Não é bem assim. Toda variável no java que não seja de um tipo primitivo, como disse o kaique, é uma referência.
Quando há uma passagem de um tipo primitivo, a cópia dessa referência é feita, portanto é uma cópia por valor.

Por isso, não dá para fazer isso aqui:

public static void exemplo(List umaLista)
{
   umaLista = new ArrayList();  //Não funciona! Altera só a cópia da referencia, local.
   umaLista.add("Vinicius");
}

public static void main(String[] args)
{
     List lista = new ArrayList();
     exemplo(lista);
     System.out.println(lista.size()); //Continua imprimindo zero!
}

Não existe passagem de parâmetro por referência em java.

adriano.ferranti

Você quis dizer uma cópia da referência, certo?

vanzella

Aff, quanta polémica pra uma coisa simples, pelo que eu entendi a pergunta seria somente para saber se o parâmetro de um Objeto é feito através de referência.

Bom vamos lá então, pelo que eu conheço:

Todos os parametros passados em um método são uma copia do endereço de apontamento de memória do mesmo, ou seja, para um tipo Object sera passado uma copia do endereço de memoria onde fica esse objeto (Heap), já para primitivos o endereço de apontamento já contem o proprio valor.

A boa é que você pode modificar um objeto a qual há varia referencias, alterando o mesmo a todas que estão referenciando.

se eu estiver errado, alguem me corrija.

Criado 3 de dezembro de 2007
Ultima resposta 3 de dez. de 2007
Respostas 5
Participantes 5