Trabalhando com Static

3 respostas
leosgoncalves

Srs, me deparei com um desafio (ao menos para mim que sou iniciante)

Uma apostila vem perguntando, pq o código abaixo não compila?

OBS: Quando declaro a variavel x, como static int x. Ai compila… mas não sei explicar porque, poderiam me ajudar?

package Desafio;

public class Teste

{

int x = 37;

public static void main(String [] args)

{

System.out.println(x);

}

}

3 Respostas

Poneis123

Um método static pode ser executado sem que crie uma instancia da classe, esse seu método ta chamando a variavel x, porém qdo ele for chamado, a variavel não irá existir, a declaração da variavel não sera executada(pois ta fora do método e não é static)…
pra isso vc deixa a variavel como static tb, para existir mesmo q não se instancie a classe… ou então vc declara a variavel dentro do método, para q essa declaração seja executada…

deu pra entender? o.O’

ralphsilver
porque, em uma classe, o método estático só enxerga os atributos da classe que são estáticos também.... caso contrário, ele não enxerga.. por exemplo:
public teste{
       public int x = 0;

       public static void testeStatic(){
                System.out.print(x);
       }
}//errado
public teste{
       public static int x = 0;

       public static void testeStatic(){
                System.out.print(x);
       }
}//certo
M

É porque o x pertence a uma instância do objeto Teste, portanto ele não pode ser acessado de um contexto static.
Você tem que instanciar a classe Teste ou acrescentar static na definição de x.
Quando colocar seu código no fórum, selecione-o e clique no botão Code acima da área de texto.

Boa sorte!

Criado 8 de abril de 2010
Ultima resposta 8 de abr. de 2010
Respostas 3
Participantes 4