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);
}
}
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’
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:
[code]
public teste{
public int x = 0;
public static void testeStatic(){
System.out.print(x);
}
}//errado[/code]
[code]
public teste{
public static int x = 0;
public static void testeStatic(){
System.out.print(x);
}
}//certo[/code]
É 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!