O que é static?

Em todo lugar que procuro acho sempre explicações muito técnicas do que é realmente static, ou senão escrevem artigos somente dizendo quando usar o static.

Gostaria de saber de uma forma rápida e simples de entender, o que é static?

Caro irmão pgtpgt, tenha calma, não to achando que voce esteja no caminho certo… Percebo voce muito afoito pra entender tudo do dia pra noite… tem certas coisas que não tem relevante importancia quando não precisa ter e quando precisar você saberá… A quanto tempo voce esta estudando Java? É o Java como programar 4ed que voce tem aí né? Relaxe… primeiro faça uma boa leitura… mesmo sem entender tudo va avançando nos capitulos e voce perceberá que com o longo do tempo voce irá se familiarizá com a linguagem e termos tecnicos… com muita calma va fazendo todos os exercicios… e voce terá exelentes resultados.
Abraço irmão…

hehehe…

É você tem razão jbjares.

ahhh e é esse livro mesmo. (Java como programar 4ed)

static é uma variavel (ou metodo), que nao depende de um objeto instanciado pra ser usado

Viu só? Aqui todo mundo ajuda senão de uma maneira de outra… Continue em frente que voce consegue pgtpgt… Abraço

Só lembrando… quando a aplicação é executada, todos os método estáticos também já são alocados na memória :joia:

Os membros estaticos não são carregados quando a aplicação é executada e sim quando a classe é carregada.

Existem 3 circuntancias em que um classe é carregada:

  • Quando uma instancia for criada
  • Quando um metodo estatico for invocado
  • Quando um atributo que não seja constant (final + static) for utilizado

Depois o classloader inclui esta classe em um cache !

http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#19075

Diz-se que o membro (variável, método) quanto estático pertence à classe e não a sua instância.
ex.:

class Teste{
 static int altura=10;
}


para acessar altura…

Teste.altura


note que…nao foi necessário criar uma instância de Teste para acessar seu atributo altura…
outro exemplo:

Math.pi
Math.cos(arg)

:joia:

1 curtida

Apenas complementando o post da Diana,

apesar do membro pertencer a classe, uma instancia pode acessar o membro estatico.

[code]
class Teste{
static int altura=10;

public static void main(String args[])
{
Teste teste = new Teste();
System.out.println("Altura : " + teste.altura);
}

}[/code]

E complementando o post do pm

Os método estáticos, tem acesso somente a variáveis de escopo do próprio método, ou de variáveis de instância estáticas.

isso mesmo Ratinho,

por exemplo pgtpgt,

o codigo abaixo daria erro de compilação, pois o atributo largura não é estatico
porem a variavel peso esta correta, pois foi declarada dentro do escopo do metodo estatico.

class Teste{
 static int altura=10;
 int largura = 1;

  public static void main(String args[])
  {
    int peso = 100;
    System.out.println("Peso : " + peso);

    System.out.println("Largura : " + largura  );
  }
}

Resumindo, um instancia acessa membros estaticos, porem membros estaticos não acessam membros de instancia.

Nossa 8O

Fazia tempo que n via um post sobre static tao grande assim rsr

pode cre :lol:

e ainda não falamos dos blocos statics…

static {

}

mas ,referente ao acesso de membros, isso tbem segue o conceito do seu penultimo post :wink:

Entao ja aproveita e pd falar um poco qdo tiver tempo, pq eu to ate o pescoco aqui na empresa… a… tb n esquece d falar do import static rsr

Entendi perfeitamente todas as explicações. Me ajudaram a compreender muito sobre o static.

Valeu