Static

Ola pessoal

Gostaria de saber para que serve a palavra reservada STATIC em java ?
Estive estudando java porém não consegui entender oque ela faz.
Oque entendi é que seria a ordem de declaração dos métodos , seria isso?? mas como ela funciona???
Estou cheio de dúvidas.

Desde já agradeço.!

Veja este artigo (está em Artigos/Tutoriais):

http://www.guj.com.br/java.tutorial.artigo.121.1.guj

Cara…a palavra static indica q a variavel ou metodo pertence a classe, e nao a uma simples instancia do objeto…por exemplo:

Se vc tem uma classe Teste com uma variavel ou metodo estatico, nao sera preciso instanciar o objeto dakela classe pra poder acessar os mebros estaticos, basta colocar na frente deles o nome da classe. Lembrando que uma o valor de uma variavel estatica sera acessivel a todos os objetos dakela classe, podendo qualker um deles alterar esse valor…

Qualker duvida posta dinovo…

Vlw!!

A palavra static serve para criar variaves ou metodos que são acessados sem a necessidade de uma instância da classe.
Por exemplo, suponha que vc tenha uma classe Conecta com uma variavel numeroConexoes.
Declarando a variavel numeroConexoes como static, não há necessidade de criar a instancia para acessa-la, por exemplo
Conecta c = new Contecta();
System.out.println(c.numeroConexoes);

Sendo estatica, so basta fazer isso:
System.out.println(Conecta.numeroConexoes);

Isso é util quando a variavel ou metodo nao sao caracteristicas proprias da instancia que vc cria (new Contecta()) e sim quando é comum a todos independente da instancia.

É claro que o acesso depende do modifcador de acesso (public, protected…)

Tem também o inicializador estático, que é um bloco fora de qualquer método que é executado quando a classe é inicializada. Mais informações aqui.

Um exemplo:

[code]class X {
int x, y, z;

static {
System.out.println(“Blablabla”);
}

X() {
}
}
[/code]

Tá o exemplo não é dos melhores eheheh…

flw

Amigo dá uma olhada no que eu fiz!
Eu estudo assim, pego livros, tutoriais, etc… .junto tudo e monto um exemplo bem legal.

[code]/* Quando e porquê usar static?

  • static é uma das palavras-chave do Java, e é também motivo de muita confusão

  • e dúvidas entre o pessoal que esta começando(eu). Aliás, mesmo os mais experientes

  • confundem-se às vezes em usar ela. O método static mais famoso de todos é o main.

  • É através dele que vimos nosso primeiro programa em Java nascer, e é sempre via

  • main que nossos programas criam vida. Por definição da linguagem Java, o método

  • main precisa necessariamente ter acesso public, ser static, não retornar coisa

  • alguma ( void ) e receber como argumento um array de String (String args[]).

  • Como regra geral, tenha isso em mente: dentro de métodos static somente é

  • possível pode acessar outros métodos e variáveis que também sejam static.

  • Dentro do método pode-se definir qualquer tipo de variável, static ou não.

  • Caso seja necessário acessar algum método ou membro não-static, é necessário

  • criar uma instância da classe e então chamar o que quiser. Já o contrario é

  • um pouco diferente: dentro de membros não-static, é possível acessar tanto

  • propriedades static quanto as não-static.

  • O fato de ser preciso primeiramente criar uma instância da classe para só

  • então chamar algum método não-static ou acessar uma variável comum dentro de

  • um método static deve-se ao fato que dentro dele não existe uma referência

  • para o ponteiro this. O ponteiro this é utilizado para referenciar

  • propriedades da classe em que estamos trabalhando.

  • Ao contrário do que o nome soa, static não significa que a variável ou método

  • sera estática do ponto de vista que seu valor não pode mudar ( final é usado

  • para estes casos ). static nos garante que somente haverá uma, e não mais que

  • uma, referência para determinada variável ou método disponível em mémoria.

  • Em outras palavras, declarando alguma coisa como static, todas as instâncias

  • da classe irão compartilhar a mesma cópia da variável ou método.

  • Declarar algo como static também permite você acessar as coisas diretamente,

  • ou seja, sem precisar criar uma instância da classe. Existe inclusive um

  • Design Patter baseado no uso de static: Singleton.
    */

class StaticTemporaria {
public static int contador_static = 0;
public int contador_normal = 0;

public StaticTemporaria() {}

public static void incrementaStatic(){
    contador_static++;
    System.out.println("Contador STATIC agora é = " + contador_static);
}
public void incrementaContador() {
    contador_normal++;
    System.out.println("Contador NORMAL agora é = "+ contador_normal);
}

}

public class Static{
public static void main(String args[])
{
System.out.println("\n1ª Instância -----");
StaticTemporaria s1 = new StaticTemporaria();
s1.incrementaStatic();
s1.incrementaContador();

    System.out.println("\n2ª Instância -----");
    StaticTemporaria s2 = new StaticTemporaria();
    s2.incrementaStatic();
    s2.incrementaContador();
    
    System.out.println("\n3ª Instância -----");
    StaticTemporaria s3 = new StaticTemporaria();
    s3.incrementaStatic();
    s3.incrementaContador();

    System.out.println("\n4ª Instância -----");
    StaticTemporaria s4 = new StaticTemporaria();
    s4.incrementaStatic();
    s4.incrementaContador();
}

}

[/code]

A saída gerada por este programa será:
 
    1ª Instância -----
    Contador STATIC agora é = 1
    Contador NORMAL agora é = 1
    
    2ª Instância -----
    Contador STATIC agora é = 2
    Contador NORMAL agora é = 1
    
    3ª Instância -----
    Contador STATIC agora é = 3
    Contador NORMAL agora é = 1
    
    4ª Instância -----
    Contador STATIC agora é = 4
    Contador NORMAL agora é = 1
 

Note que o atributo “contador_static”, que é static, não teve seu valor zerado
a cada novo objeto criado da classe StaticTemporaria, mas sim incrementado,
enquando “contador_normal”, que é um atributo comum, ficou sempre em 1, pois
zeramos o valor no construtor da classe.

1 curtida

o terra.jr disse tudo!!