O conceito de passagem por valor em java,usa argumentos de métodos. No entanto, é importante entender como isso se aplica a tipos primitivos e tipos de referência para compreender completamente o comportamento.
Passagem por Valor em Java
Passagem por valor significa que o valor real do argumento é passado para o método, e não uma referência ao valor. Portanto, qualquer modificação feita ao valor dentro do método não afeta o valor original fora do método.
Posts recentes
Tipos Primários e Tipos de Referência
Tipos Primitivos
Passagem por valor significa que o valor real do argumento é passado para o método, e não uma referência ao valor. Portanto, qualquer modificação feita ao valor dentro do método não afeta o valor original fora do método.
Exemplo:
public class PassagemPorValor {
public static void main(String[] args) {
int a = 10;
alterarValor(a);
System.out.println("Valor de a após chamar o método: " + a); // a ainda é 10
}
public static void alterarValor(int x) {
x = 20; // Altera a cópia local de x, não a variável original
}
}
Neste exemplo, o valor de a
não é alterado fora do método alterarValor
, pois x
é uma cópia do valor de a
.
Tipos Referência
Para tipos de referência (como objetos e arrays), a passagem por valor ainda se aplica, mas o que é passado é o valor da referência (ou seja, o endereço do objeto na memória). Portanto, enquanto a referência em si é passada por valor (ou seja, você não pode mudar a referência para apontar para um novo objeto), o objeto referenciado pode ser modificado através dessa referência.
Exemplo:
public class PassagemPorReferencia {
public static void main(String[] args) {
Pessoa p = new Pessoa("João");
alterarNome(p);
System.out.println("Nome após chamar o método: " + p.nome); // Nome é alterado para "Maria"
}
public static void alterarNome(Pessoa pessoa) {
pessoa.nome = "Maria"; // Modifica o objeto referenciado
}
}
class Pessoa {
String nome;
Pessoa(String nome) {
this.nome = nome;
}
}
Neste exemplo, o objeto p
é passado para o método alterarNome
, e o nome do objeto é alterado. A referência ao objeto em si não é alterada (não é possível fazer p = novoObjeto
dentro do método), mas as propriedades do objeto referenciado são modificadas.
Resumo
- Passagem por Valor para Tipos Primitivos: Uma cópia do valor é passada. Alterações ao valor dentro do método não afetam o valor original.
- Passagem por Valor para Tipos de Referência: A referência ao objeto é passada por valor (ou seja, uma cópia do endereço do objeto). Alterações ao objeto referenciado afetam o objeto original, mas você não pode mudar a referência para apontar para um novo objeto.
Se precisar de mais detalhes ou tiver outras dúvidas, sinta-se à vontade para perguntar!