SóProvas


ID
141268
Banca
ESAF
Órgão
ANA
Ano
2009
Provas
Disciplina
Programação
Assuntos

Os argumentos são passados para métodos, em Java, por

Alternativas
Comentários
  • Passagem de parâmetros em JavaPor Marcus AureliusOntem no grupo de Computação Gráfica na UFRGS a gente teve uma bela discussão sobre passagem de parâmetros em Java. O interessante é que todo mundo sabia como funciona o mecanismo, só que uns chamavam de um jeito e outros (no caso, só o Pamplona, hehehe) chamavam a mesma coisa de outro nome. Por exemplo:No caso de uma variável de um tipo primitivo, ela é passada por valor (isto é, por cópia).No caso de uma variável contendo um objeto, o ponteiro pro objeto, ou melhor, a referência (assim costuma-se dizer em Java) é passada por valor.E aqui havia a bifurcação:Eu e todo mundo dizíamos, que se a referência ao objeto é passada, o objeto é passado por referência, então! Simples e lógico…Já o Pamplona concluía que então tudo era passado por valor, já que a referência ao objeto era passada por valor, do mesmo jeito que os tipos primitivos. Faz sentido também, mas eu ainda acho que passar uma referência é passagem por referência. :)Não me lembrei de perguntar: “Se isso aí não é passagem por referência, o que é passagem por referência então?”. Bom, imagino que a resposta seria: “Passagem por referência é passar a própria referência por referência”. Pra mim isso o nome disso é exatamente o que eu escrevi: passagem de referência por referência. Confuso? Acho que não! (o outro caso era passagem de objeto por referência, só pra relembrar) :DNo fim das contas, eu acho que o programador não pode deixar de saber que existe tanto o objeto quanto sua referência. São 2 expressões (passagem por valor e passagem por referência) pra expressar 3 conceitos (valor, referência por valor e referência por referência). Não tem como explicar melhor as coisas sem dar a explicação completa. Dizer que é tudo por valor não explica bem todos os casos, e dizer que tipos primitivos são passados por valor e objetos são passados por referência também é uma explicação meio incompleta (fica faltando: “é a referência ao objeto que é passada p
  • Sempre por valor (independente se tipo for primitivo ou for objeto).
  • Passagem de parâmetros por valor: A função recebe uma cópia da variável que é fornecida quando é invocada. Todas as alterações feitas dentro da função não vão afectar os valores originais.

    Passagem de parâmetros por referência: Neste caso o que é enviado para a função é uma referência às variáveis utilizadas, e não uma simples cópia, pelo que as alterações realizadas dentro da função irão certamente alterar os valores contidos nessas variáveis.