Pontos vírgulas desnecessários não geram erros de compilação, nem em tempo de execução

Olá pessoal,

comecei a estudar para a certificação pelo livro SCJP,
nos primeiros códigos que eu estou executando encontrei pontos e vírgulas em lugares desnecessários
no final da linha do método main por exemplo e logo após o loop.
O programa compilou e rodou normalmente.
Aguém sabe explicar o que acontece?
Porque o compilador não reclama?
E pior ainda (eu acho), roda sem problemas?

public class TestDays {

	enum Days {MON, TUE, WED};
	
	public static void main (String [] args) {;
		for (Days day : Days.values())
		
		;;;;;;;;;;;;;;;;;;;;;;;;;;
		
		Days[] days = Days.values();
		System.out.print(days[2]);
	}
}

Bom dia

Isso acontece porque o compilador java entende que o ponto-e-virgula é o final de uma linha, e cada linha representa uma ação.

por exemplo, quando você declara um método

  public void novoMetodo() {
  }

na linha 01, ele declarou um método, publico, que vai retornar void e abre o bloco desse método onde inicia as ações desse método
então quando você faz

  public void novoMetodo() {
      int x = 3;
  }

a primeira ação do novo método é a declaração da variável x, com o valor 3.
e quando fazemos assim

  public void novoMetodo() {
     ;
     int x = 3;
     ;;;;
  }

a primeira ação, é vazia, então o compilador do java simplesmente ignora isso, depois vem a ação de declarar a variável, e depois, tem mais quatro ações vazias, que o compilador vai ignorar, por isso que funciona.

se alguém quiser complementar/corrigir fico grato

abraços =P

Bastante interessante essa definição fmachado.

Acabei de passar pelo mesmo problema e vim aqui em busca de uma resposta…

No caso, independentemente da quantidade de pontos-e-vírgulas que sejam colocadas no código, cada um deles será interpretado como uma nova linha de código sem nenhuma ação a ser executada.

Vlw pela ajuda.

Este tópico está triplicado…