Se vc inicializar com 0, estará criando apenas uma posição no vetor.
No código que o nosso amigo postou, geraria uma excecao pois estouraria o vetor.
Object[] obj = new Object[0];
for (int i =0; i<=10; i++){
}
Nesse caso, para não estourar, o certo e usar a var. length, como disse nosso amigo.
Object[] obj = new Object[0]; //apenas um laço
for (int i =0; i obj.length; i++){
}
Um vetor é um Objeto. Todo objeto, assim como as variáveis locais (dentro dos metodos) antes de serem usados deve ser inicializados. Quando voce inicializa o vetor de objetos como a seguir:
Object[] obj = new Object[10];
vc está criando 11 posições, sendo que em cada posição estará com o valor padrao do tipo do vetor que no caso é um objeto.
Se voce fizer:
for (int i =0; i obj.length; i++)
System.out.println(obj[i]);
será impresso null 11 vezes pois o valor padrão do object é null, assim como se o tipo do vetor fosse um int, seria impresso o numero 0 que é o padrao de int.
Sendo bem redundante, vc inicializou o vetor mas não disse o que tem em cada posição.
Espero ter ajudado.
Marck