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.
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…
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…)
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();
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.