No caso do programa abaixo, não deveria dar erro pois a variável i não foi inicializada? Pelo o que eu havia entendido, o compilador não tem certeza que variáveis dentro do for serão inicializadas.
public static void main(String[] args) {
int i;
for (i = 0; i < 5; i++) {
if (++i % 3 == 0) {
break;
}
}
System.out.println(i);
}