Bem, não tenho ainda experiência, mas pelo que entendi é que atributos estáticos são compartilhados por toda as instâncias da classe, sendo assim ele irá mostrar a última referência feita a ele.
Ex:
public class Tv{
public static String marca = null;
}
public class TestTv{
public static void main(String[] args){
Tv t1 = new Tv();
Tv t2 = new tv();
System.out.println(t1.marca);//mostra null
System.out.println(t2.marca);//mostra null
t1.marca = “LG”;
System.out.println(t1.marca);//mostra LG
t2.marca = “CCE”;
System.out.println(t2.marca);//mostra CCE
System.out.println(t1.marca);//mostra CCe
}
}
Caros Colegas quero que avaliem, pois sobre atributos estáticos entendi assim.
Não tenho como pegar a hora da criação de um atributo da classe no debug.
O máximo que chego é a atribuição do atributo feita dentro do bloco estático.
Outra, se fosse isso mesmo, não faria diferença alguma se eu inicializasse a variável ou não, mas como eu disse acima, se a variável tiver um valor acontece uma coisa senão acontece outra.
A inicialização ocorre de cima para baixo, na ordem em que aparecem
public class Car {
static {
name = "MyCar";
}
static String name;
public static void main(String[] args) {
System.out.println(Car.name);
}
}
a razao por este trecho funcionar eh que static String name; não é uma instrucao e sim uma declaracao… vale lembrar que as inicializações ( name = null, por exemplo) se tornam no bytecode algo como
static String nome; //isso eh uma declaracao de variavel estatica
static {
nome = null; //isso aqui eh uma atribuicao
}
para variaveis estaticas, e sao inseridas nos construtores para variaveis de instancia
nao… as chaves sao usadas para delimitar um bloco de estatico… em um bloco estatico voce pode colocar codigo que sera executado durante o carregamento da classe, como, por exemplo, a inicializacao de alguma variavel estatica