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!
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!
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.
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.
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.
Você quis dizer uma cópia da referência, certo?
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.