Atributo e metodo statico

2 respostas
W

Pessoal,
Tenho a seguinte situação:

class ChamadasDiferentes{
     static int x = getValue();  
     static int y = 5;
    
    private static int getValue()
    {
      return y;
    }
    
    public static void main(String[] args)
    {
      System.out.println(" x : " + ChamadasDiferentes.x);
      System.out.println(" metodo : " + ChamadasDiferentes.getValue());
    }
}
O resultado é :

x :  5;

metodo : 5;

Mas o resultado de X = 0,

Pelas minha consideraçoes, como o Atributo e o metodos é static, o valor deveria ser 5 para X também, o que não ocorre !!??

Alguém poderia explicar melhor isso ?

2 Respostas

antoniopopete

É porque na hora que voce faz a chamada de x com getValue y ainda não foi inicializada e usa o valor default de int que é 0.
Se voce inicializar y antes com 5, ai ele vai faer essa atribuição antes.
Mas a iincialização static acontece de maneira sequencial e em ordem.
Então no momento que voce atribui y a x o valor de x ainda é zero, na proxima instrução que voce muda o valor para 5.

W

Legal.
valeu,
marquei minha prova de Java p/ o dia 28/08, então até lá, me aguentem…

Criado 9 de agosto de 2007
Ultima resposta 9 de ago. de 2007
Respostas 2
Participantes 2