O significa static em Java Pelo nome, percebe-se que está relacionado com algo constante, algo parado, estático. Quando definimos uma classe e criamos vários objetos dela, já sabemos que cada objeto irá ser uma cópia fiel da classe, porém com as suas próprias variáveis e métodos em lugares distintos da memória. Ou seja, o objeto 'porsche' tem suas variáveis próprias, diferentes do objeto 'ferrari', embora ambos tenham o mesmo 'modelo', que é a classe 'Carro'. Quando definimos variáveis com a palavra static numa classe ela terá um comportamento especial: ela será a mesma para todos os objetos daquela classe. Ou seja, não haverá um tipo dela em cada objeto. Todos os objetos, ao acederem e modificarem essa variável, acedem à mesma variável, ao mesmo espaço da memória, e a mudança pode ser vista em todos os objetos. Como declarar uma variável static em Java Basta colocar a palavra static antes do tipo: static tipo nomeDaVariavel Numa classe: private static int vendidos; public static int totalAlunos; Quando usar variáveis static em Java Principalmente quando se quiser ter um controlo sobre os objetos ou quando todos os objetos devem partilhar uma informação. Exemplo 1: Para controlo de número total de objetos Imagine um sistema de informação para stand de automóveis. Cada carro que se vende, tem um comprador diferente, dados diferentes etc. Portanto, cada carro será um objeto. Cria-se a variável estática 'total', e no construtor incrementa-se (total++). Assim, saberemos quantos carros foram vendidos, automaticamente. Um exemplo parecido, seria para um aplicativo de uma escola ou empresa, para controlo de quantos funcionários existem na empresa, ou em cada setor dela. Exemplo 2: Para Partilhar uma informação Muitas aplicações Java, principalmente jogos, usam o static para partilhar informações sobre o número de objetos. O uso tem a ver com algoritmos sobre inteligência artificial. Por exemplo, num jogo de futebol, quando se joga contra o computador. A máquina tem uma estratégia diferente dependendo da equipa que se escolher, do modo como se joga, do número de jogadores, etc. E como saber o número atual de jogadores da equipa deles? Ora, um método static. Pois todos os jogadores são objetos de uma mesma classe. Num jogo de luta, se existirem 3 inimigos contra 2 personagens teus. Provavelmente o computador vai-te atacar. Mas se matares dois deles, eles estarão em desvantagem. Existe então um método que faz com que os inimigos corram, caso o número de jogadores dele seja menor que o teu. Para obter essa informação, os objetos devem partilhar da informação: número de personagens vivos. Exemplo de código com static O seguinte código cria uma classe bem simples, a "Carro" que simplesmente informa quando o objeto é criado - através do método construtor padrão main - e incrementa a variável 'total', que vai guardar a informação do número total de objetos/carros criados na sua aplicação. staticTest.java public class staticTest { public static void main(String[] args) { Carro porsche = new Carro(); Carro ferrari = new Carro(); Carro jipe = new Carro(); } } Carro.java public class Carro { public static int total=0; Carro(){ total++; System.out.println("Objeto criado. Existem "+total+" objetos dessa classe"); } }