Passagem de Parâmetro

2 respostas
Murilo_Locatelli

Galera, eh o seguinte, estou com uma dúvida no seguinte código:

public class EnvioArgumentosReferenciaValor {

	public static void main(String[] args) {

		//Valor
		Integer k = 10;
		System.out.println(k);
		test(k);
		System.out.println(k + "\n");
		
		//Referencia
		int []ages = {10, 11, 12};
		for(int i = 0; i < ages.length; i++) {
			System.out.println(ages[i]);
		}
		
		test2(ages);
		
		for(int i = 0; i < ages.length; i++) {
			System.out.println(ages[i]);
		}
	}
	
	public static void test( Integer j ){
		j = 33;
	}
	
	public static void test2(int[] arr){
		for(int i = 0; i < arr.length; i++) {
			arr[i] = i + 50;
		}
	}	
}

Pq no método test, o parametro sendo do tipo reference(um objeto), seu valor nao se altera???

vlw ai!!

2 Respostas

felipedamiani

você precisa retornar o valor!

public static Integer test( Integer j ){  
         j = 33;  
         return j;
     }
neohacker

O seu Objeto é um Integer … que é um Wrapper …
Nesse caso ele está funcionando como se fosse um int mesmo …
Então quando você define um novo valor a ele … ele cria uma nova referencia … e como você não guarda essa nova referencia parece que nada acontece … da uma olhada em Auto-boxing e unboxing

Criado 26 de dezembro de 2007
Ultima resposta 26 de dez. de 2007
Respostas 2
Participantes 3