public class Soma {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 0;
int y[] = { 0 };
System.out.println(x + " " + y[0]);
somaDois(x);
System.out.println(x + " " + y[0]);
somaTres(y);
System.out.println(x + " " + y[0]);
somaDois(y[0]);
System.out.println(x + " " + y[0]);
}
private static void somaTres(int[] y) {
System.out.println("y"+y[0]);
y[0] += 3;
System.out.println("y"+y[0]);
}
private static void somaDois(int x) {
System.out.println("X"+x);
x += 2;
System.out.println("X"+x);
}
}
Por que a saída final é 0 3?
Acho que eu não entendi bem a pergunta.
A saída “0 3” é só na última e você não sabe o porquê?
Seguinte amigo tipos primitivos passado em parametro em um metodo não é alterado o valor da variavel original.
É criado uma outra variavel então qualquer alteração feita no valor dela so tem efeito no próprio metodo
Só que vetores são independente se é de tipo primitivo ou não por isso o y na posição 0 no final é 3 e o x continua zero
Espero ter respondido
Na verdade a saida é:
0 0
X0
X2
0 0
y0
y3
0 3
X3
X5
0 3
você deve subir a janela do console para ver o inicio da impressão, referente o porque dessa saida é que nos metodos de somaDois(x); somaTres(y); e somaDois(y[0]); você esta executando System.out.println() e depois no main() você torna a imprimir com System.out.println() novamente para resolver isso é simples
public class Soma {
public static void main(String[] args) {
int x = 0;
int y[] = { 0 };
System.out.println(x + " " + y[0]); // 0 0
x = somaDois(x);
System.out.println(x + " " + y[0]); // 2 0
y[0] = somaTres(y);
System.out.println(x + " " + y[0]); // 2 3
y[0] = somaDois(y[0]);
System.out.println(x + " " + y[0]); // 2 5
}
private static int somaTres(int[] y) {
y[0] += 3;
return y[0];
}
private static int somaDois(int x) {
x += 2;
return x;
}
}
[quote=leonardobhbr]Seguinte amigo tipos primitivos passado em parametro em um metodo não é alterado o valor da variavel original.
É criado uma outra variavel então qualquer alteração feita no valor dela so tem efeito no próprio metodo
Só que vetores são independente se é de tipo primitivo ou não por isso o y na posição 0 no final é 3 e o x continua zero
Espero ter respondido[/quote]
Ah, bom. Aí sim. Não sabia desta regra. Valeu.
amigo caso sa duvida tenha sido respondida, por favor altere o tópico para [RESOLVIDO]
abraços