Atributo de método

4 respostas
W

Pessoal,
Tenho a seguinte situação, entendi que o valor mostrado de “a”, “b” mas “c” para meu pouco conhecimento deveria ter o mesmo valor de “b”,
Porque a diferença?

class VariavelInstanciaClasse{
    int a;
    int b;
  
    public void f()
    {
      a = 0;
      b = 0;
      int[] c = {0};
      g(b,c);
      System.out.println(a + " - " + b + " - " + c[0] + " - " );
    }
    public void g(int b, int[]c)
    {
      a = 1; 
      b = 1; 
      c[0] = 9 ;
    }
    public static void main(String[] args)
    {
       VariavelInstanciaClasse obj = new VariavelInstanciaClasse();
       obj.f();
    }
}

Obrigado.

4 Respostas

diego2005

Qual deve ser a saída na sua opinião??

T+

Veronicaaa

Olá
Java passa somente por valor todas as suas variáveis, ou seja ele passa uma cópia dos bits das variáveis, se você esta passando um primitivo que é o caso das suas variáveis a e b você estará passando a cópia dos bits que representam determinado valor.
Um Array, mesmo sendo um array de primitivos é considerado um objeto e por isso você passa uma cópia dos bits que representam como você pode acessar determinado objeto na memória, é isso você não passa o objeto e nem mesmo a referencia desse objeto, assim sendo tanto o o metodo que chamou como o metodo chamado terão uma cópias idênticas da referencia do objeto e por isso se referem ao mesmo objeto na memória.
Isso é o que está no livro de certificação da Kathy.

W

o resultado que Eu esperava era : 1 - 0 - 0
mas o resultado rela foi : 1 -0 - 9

diego2005

O resultado é esse porque um array em Java é um objeto, então quando você passa um array pra método você está passando uma referência pra esse array.

T+

Criado 8 de agosto de 2007
Ultima resposta 8 de ago. de 2007
Respostas 4
Participantes 3