A passagem de parametros por valor é quando uma copia desse é enviada, por referencia é quando um “ponteiro” é passado, essa parte é facil de entender mas, quando me deparo com um código, fica difícil de diferenciar qual dos dois estão sendo usados. Será que alguém poderia me dar uma orientação em relação a isso, e se possível demostrando em código.
Em java a passagem de parâmetros é sempre por valor, nunca por referência,os tipos primitivos são armazenados na memória stack, já os objetos são criados na memória heap e a referência dele é criada na stack.
//criando um objeto do tipo cliente
Client client01 = new Client();
client01.name = "Mario Junior";
System.out.println("Cliente: "+client01.name);
//chamando o método passando como parâmetro o cliente
updateClient(client01);
//método para modificar o nome de um cliente
public void updateClient(Client oneClient) {
oneClient.name = "Mario Castro Junior";
}
System.out.println("Cliente: "+client01.name);
O código acima modifica o nome do cliente devido ao parâmetro estar apontando para o mesmo endereço de memória,
como a passagem é por valor e não por referência, o nome modificado no método retorna para o parâmetro, mas como o parâmetro esta apontando para o mesmo endereço do objeto passado ele é modificado tb;