Qual será a resposta?

3 respostas
marcelo_mococa

To fazenu uns simulados…
Não estou entendendo este codigo, O q será impresso na tela?
Por favor expliquem…

public class Pass{
    static int j=20;
    public static void main(String argv[]){
	int i=10;
	Pass p = new Pass();
	p.amethod(i);
	System.out.println(i);
	System.out.println(j);
    }

    public void amethod(int x){
	x=x*2;
	j=j*2;
    }
}

3 Respostas

Java_Vinicius_Machin

A saída será:
10
40

e não:
20
40

como esperado, isso acontece porque uma cópia do valor de i é passada para o método então o valor (conteúdo) da variavel i não é alterado. Por outro lado j tem seu valor alterado porque é uma variavel estática (também chamada de variavel de classe) e qualquer alteração na mesma será refletido em qualquer instância da classe que tentar acessa-lá.
Entendeu?

{}-s :wink:

Grinvon

Exato, é como Vinícios falou. Apenas a cópia da variável local é passado para o método solicitado, portanto quando o método é finalizado o valor não retornando para o main().

E como i é uma variável estática, então ela irá mudar o valor, em qualquer parte do código que esteja. Diferentimente aconteceria se ao invés de ser passado um tipo primitivo fosse um objeto.

K

Questão bbbeeemmm tipica de certificação… Mas isso ai vai complicar um pouco mais qndo for com objetos, ai vc vai que tem alguns que vão fazer algo mais ou menos assim, como as String
Se não prestar atençao da para dancar legal!

Criado 6 de agosto de 2005
Ultima resposta 17 de ago. de 2005
Respostas 3
Participantes 4