Duvida besta

Ae pessoal, coloquei o titulo como duvida besta, mas como todos sabemos não exitem duvidas bestas ehhe.
Bom vamos la, tava brincado aki com o eclipse e me deparei como seguinte[code]
public

class Decrementer{

public static int a= 1;
public int b = 1;

public static void main(String[] args) {
Decrementer decrementer = new Decrementer();
decrementer.soma(); //1
soma();
}
public static void soma(){
a = a+1;
b=b+1;
System.out.println(“a=” + a + " b=" +b);
}
}[/code]

Minha duivida é a seguinte: o codigo nao compila pq a varia b nao e estatica, e assim um metodo estatico nao pode acessar uma variavel nao estatica, nao eh mesmo?
Um metodo estatico nao precisa estanciar, nao eh?? Mas e se no instanciarmos? como na linha 1?? Aqui ele nao deu erro, apenas ficou “com o sublinhado amarelo”, entao oq acontece nesses casos?

Abracos!

[quote=ceeduardo]Ae pessoal, coloquei o titulo como duvida besta, mas como todos sabemos não exitem duvidas bestas ehhe.
Bom vamos la, tava brincado aki com o eclipse e me deparei como seguinte[code]
public

class Decrementer{

public static int a= 1;
public int b = 1;

public static void main(String[] args) {
Decrementer decrementer = new Decrementer();
decrementer.soma(); //1
soma();
}
public static void soma(){
a = a+1;
b=b+1;
System.out.println(“a=” + a + " b=" +b);
}
}[/code]

Minha duivida é a seguinte: o codigo nao compila pq a varia b nao e estatica, e assim um metodo estatico nao pode acessar uma variavel nao estatica, nao eh mesmo?
Um metodo estatico nao precisa estanciar, nao eh?? Mas e se no instanciarmos? como na linha 1?? Aqui ele nao deu erro, apenas ficou “com o sublinhado amarelo”, entao oq acontece nesses casos?

Abracos!

[/quote]

Pergunta 1-) Sim, a variável b está fora de contexto, logo este código não compila.
Pergunta 2-) Um método estático pertence a classe e não a instância, porém ele pode ser chamado através da instância. Somente lembrando que o comportamento do método estático não dependerá
do estado do objeto. :thumbup:

Acho que vc deve mudar o tema da tua duvida. Tipo para SCJP é tanto assunto, tanto assunto que tu é capaz de errar uma declaração em uma prova. tipo float a = 2.3 como eu errei ou tu pode errar um super() de um construtor. Não que seja dificil mas eh tanto assunto que esses pequenos detalhes passam dispercebidos então axo que acaba não se tornando besta.

Essa tua primeira duvida foi questão de prova e eu errei. Então tira essa hitória de duvida besta.
:wink:
vlw t+.