Alguém me explica? [Resolvido]

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