Pessoal este tópico é para definir se entendi bem o que vem a ser static.
Então vamos lá. a palavra static serve para criar métodos e variaveis antes de elas serem criadas como objeto! Tipo quando usamos o static em algum momento da classe. Ele vem ser executado primeiro que os metodos normais e variaveis… E so podem ser usados uma unica vez!
quando se usar para instanciar uma classe o static vem primeiro que o construtor… Isto ta correto ate agora?
grato.
Conceito de static, aprovado?
4 Respostas
Pelo que consegui entender lendo o que você escreveu, seu conceito esta errado! 
Ao colocar static antes de algum metodo ou atributo significa que o mesmo pertence a classe e não ao objeto.
Exemplo:
public Class Pessoa
{
// Exemplo de static no atributo.
public static String nome;
public static Long idade;
// ... + atributos e metodos quaisquer, sendo static ou não! ...
}
public class TesteStatic
{
public static void main(String[] args)
{
Pessoa paulo = new Pessoa();
paulo.nome = "Paulão"; // Da erro pois o atributo é da classe e não do objeto.
Pessoa.nome = "Paulão"; // Correto!!!
}
}
Quer mais um exemplo?! (Agora com descrição)
Você vai criar um incrível jogo de batalha, onde tem diversos soldados, cada soldado é um objeto! Como você poderia controlar o numero de soldados que seu exercito tem?! Coloca um atributo estatico (numeroSoldados) na classe e você faz o controle. Segue abaixo a classe soldado:
public Class Soldado
{
// Exemplo de static no atributo.
private String nome;
private String patente;
private TipoSanguineo tipoSanguineo;
private static int numeroSoldados;
Soldado()
{
numeroSoldado += 1;
}
public void mataSoldado()
{
numeroSoldado -= 1;
}
}
Entendeu?!
Abraços …
Valeu galera…
Pelo que consegui entender lendo o que você escreveu, seu conceito esta errado!![]()
Ao colocar static antes de algum metodo ou atributo significa que o mesmo pertence a classe e não ao objeto.
Exemplo:
public Class Pessoa { // Exemplo de static no atributo. public static String nome; public static Long idade; // ... + atributos e metodos quaisquer, sendo static ou não! ... } public class TesteStatic { public static void main(String[] args) { Pessoa paulo = new Pessoa(); paulo.nome = "Paulão"; // Da erro pois o atributo é da classe e não do objeto. Pessoa.nome = "Paulão"; // Correto!!! } }Quer mais um exemplo?! (Agora com descrição)
Você vai criar um incrível jogo de batalha, onde tem diversos soldados, cada soldado é um objeto! Como você poderia controlar o numero de soldados que seu exercito tem?! Coloca um atributo estatico (numeroSoldados) na classe e você faz o controle. Segue abaixo a classe soldado:
public Class Soldado { // Exemplo de static no atributo. private String nome; private String patente; private TipoSanguineo tipoSanguineo; private static int numeroSoldados; Soldado() { numeroSoldado += 1; } public void mataSoldado() { numeroSoldado -= 1; } }Entendeu?!
Abraços …
mais assim o fato que ele falou de static ser executado primeiro que acho qeu ele confudiu com bloco de inicialização… que sao executados primeiros que os contrutores.
A função de ter o modificador de static em metodos e variaveis de instancia eh o fato de que você nao precisar criar um objeto para acesar aquela variavel ou metodo… ou seja… o acesso é direto… veja:
class Sttaic{
static int num;
static void setNum(){}
public static void main(String []ar){
System.out.println(num);
setNum();
}
}
sem o static
class Sem{
int num;
void setNum();
public static void main(String ar[]){
Sem s = new Sem();
System.out.println(s.num);
s.setNum();
//isso é obrigado para chamar os membros nao static dentro
//de um contexto static, senao o codigo nem compila
}}
flw!!!