pq gera esse erro, no seguinte codigo, qual a causa?
10. public class Foo {
11. static int[] a;
12. static { a[0]=2; }
13. public static void main( String[] args ) {}
14. }
pq gera esse erro, no seguinte codigo, qual a causa?
10. public class Foo {
11. static int[] a;
12. static { a[0]=2; }
13. public static void main( String[] args ) {}
14. }
Vc tem que inicializar(instanciar) o Array com uma capacidade, certo?
Sem isso, não pode atribuir valores aos seus índices. 
Tá aí. Se a fosse uma variável de instância seria fácil né. Vou acompanhar esse tópico pra descobrir a resposta.
[quote=evertonsilvagomesjava]pq gera esse erro, no seguinte codigo, qual a causa?
10. public class Foo {
11. static int[] a;
12. static { a[0]=2; }
13. public static void main( String[] args ) {}
14. }[/quote]
Ilustre neste codigo, não tens objecto a, apenas na linha 11 tens uma variavel que vai ter uma referencia a um vector ( objecto) , e não criaste um objecto
e na linha 12 tentaste atribuir um valor
[quote=Marcos Lima]Vc tem que inicializar o Array com uma capacidade, certo?
Sem isso, não pode atribuir valores aos seus índices. :D[/quote]
Verdade. É isso mesmo. Pela exceção eu achei que fosse pelo fato de um bloco estático não poder acessar campos. Mas isso só é verdade se o campo for uma variável de instância.
evertonsilvagomesjava, você poderia ter colado isso aqui : " Caused by: java.lang.NullPointerException". Seria mais fácil deduzir. hehehe
rsrs rod daria nullpointer num caso desse n?
[code]int [] a;
void teste(){
a[0] = 2;
}[/code]
Everton, mas é exatamente isso que você está tentando fazer, mas dentro do bloco estático. 
[quote=evertonsilvagomesjava]rsrs rod daria nullpointer num caso desse n?
[code]int [] a;
void teste(){
a[0] = 2;
}[/code][/quote]
Claro. Trata-se do mesmo erro. Ainda não existe objeto no heap. A variável a faz referência a null.
[quote=evertonsilvagomesjava]pq gera esse erro, no seguinte codigo, qual a causa?
10. public class Foo {
11. static int[] a;
12. static { a[0]=2; }
13. public static void main( String[] args ) {}
14. }[/quote]
Vou tentar explicar por outras palavras, começando do principio é o seguinte,
a Variavel static int[] a é uma variavel de referençia a um objecto do tipo vector de inteiros, mas é apenas uma referençia e não podemos dar valor a referençia apenas podemos dar valor no objecto ao qual a variavel referençia referençiá, e neste caso a variavel “a” ainda não tem referençia para nenhum objecto, apenas existe uma variavel que um dia tera uma referençia mas como ainda não tem referençia não é possivel atribuir valor ao objecto que ela referençia.
E continuando depois de criarmos um objecto do tipo vector ai sim vamos definir o indice do vector, e a variavel estara a referençiar um objecto no qual será possivel inserirmos valores.
por isso quando fazes a seguinte linha de codigo da erro "static { a[0]=2; } " porque neste caso o compilador tenta procurar o objecto no qual a variavel a referençia e se encontrar um objecto em que a variavel a referençia ela procura o indice 0 e atribui o valor, mas neste caso não tem objecto nenhum porque não inicializaste a variavel de referençia. e dai vem o erro.
fazendo isso static int[] a= new int[5]; ai sim estamos a criar um objecto , e a passar a referençia deste objecto a variavel a
será que pude ajudar???