Ola a todos…
espero q vcs possam me explicar de uma vez por todas essa historia do modificador STATIC…
o q ele faz com a variavel?? pq, dependendo do caso, a variavel precisa ser STATIC??
obrigado.
Ola a todos…
espero q vcs possam me explicar de uma vez por todas essa historia do modificador STATIC…
o q ele faz com a variavel?? pq, dependendo do caso, a variavel precisa ser STATIC??
obrigado.
É mais ou menos assim, por exemplo o método main(), ele é público (public) e é um método static. Então o método no qual é declarado static não possui refencia this. Caracteristicas static podem ser chamadas atraves do nome da classe. Então de um método static voce não pode acessar uma caracteristica não static e tem mais, não importa quantas instâncias existem de uma classe, somente uma cópia de caracteristica static existe. Caracteristicas não static contem sua própria copia de cada instância. Bem acho que é isso!!!
O modificador “static” faz com que somente haja uma referencia ao objeto ou propriedade na memoria, indepentende de quantas instancias foram criadas. Veja o seguinte exemplo: a classe tem 2 variavies, uma normal e uma static. A cada nova instancia da classe incrementamos ambas variaveis e entao jogamos na tela o resultado. Como vc vai ver, a que tem o modificador “static” nao tem o valor zerado, mas sim mantido e incrementado a cada nova instancia.
// TesteStatic.java
class MinhaClasseStatic
{
// Variavel static
// somente uma na memororia
public static int contadorStatic = 0;
// variavel normal
// uma por instancia
public int contadorNormal = 0;
public MinhaClasseStatic()
{
contadorStatic++;
contadorNormal++;
System.out.println("contadorStatic: "+ contadorStatic);
System.out.println("contadorNormal: "+ contadorNormal);
}
}
public class TesteStatic
{
public static void main(String args[])
{
// Cria varios objetos da mesma classe
MinhaClasseStatic m1 = new MinhaClasseStatic();
MinhaClasseStatic m2 = new MinhaClasseStatic();
MinhaClasseStatic m3 = new MinhaClasseStatic();
MinhaClasseStatic m4 = new MinhaClasseStatic();
MinhaClasseStatic m5 = new MinhaClasseStatic();
MinhaClasseStatic m6 = new MinhaClasseStatic();
}
}
Compile e execute este codigo. Voce vai ver que a variavel “contadorNormal” SEMPRE tem o valor “1”, mas “contadorStatic” eh incrementado ate “6”. Isso se deve ao fato que, sendo static, temos a certeza que nao ha mais do que uma copia da variavel na memoria. Um uso comum eh para compartilhar informacoes entre todas as instancias da classe.
Um metodo static, como
public static void imprimeMsg(String msg) { ... }
nao precisa de uma instancia da classe para ser chamado. Em outras palavras, um metodo normal ( que nao contenha “static” na declaracao do metodo ) precisa de um objeto da classe para funcionar:
...
MinhaClasse m = new MinhaClasse();
m.meuMetodoNaoStatic();
Porem, se for declarado como static, voce pode chamar direto:
...
MinhaClasse.imprimeMsg("Ueba");
Rafael
Resumindo, qdo vc precisa de inicializar várias antes mesmo que sua classe seja criada, ou vc qr um executar método que independa da classe em que esta esteja tenha sido instanciada, vc implementa estes como static.
Espero ter ajudado, George Queiroz
[quote=“rbarioni”]Ola a todos…
espero q vcs possam me explicar de uma vez por todas essa historia do modificador STATIC…
o q ele faz com a variavel?? pq, dependendo do caso, a variavel precisa ser STATIC??
obrigado.[/quote]