Eu prefiro usar um loop while , mas uma expressão nula permite que você escreva isso:
for (;;) { thread.run(); }
No entanto, uma declaração nula permite que você escreva isso:
while(true);
{
thread.run();
}
O objetivo principal é desperdiçar o tempo do programador de manutenção deficiente que vem atrás de você e se pergunta por que o encadeamento não está sendo executado. Uma declaração deve demorar um pouco. Sozinho ; é uma afirmação. Portanto, esse bloco de instruções não faz parte do loop.
Isso não quer dizer que não haja bons usos. Eles são apenas raros. Eles geralmente se parecem com isso:
{
;
}
Porque dessa maneira parece mais que você pretende fazer isso (mesmo que isso às vezes não seja suficiente).
Na montagem, essa declaração nula é chamada de NOP . No Python, isso é chamado de passe . No java (e nos outros filhos de c), é um ponto e vírgula, como você disse, ou até afirma que é verdade;
Conheço alguns usos:
Semântica .
Há uma diferença entre um espaço vazio e colocar um zero como resposta. Diz claramente, não, não esqueci de colocar algo aqui. Este nada pretende ser nada. Não é nada explícito. Este espaço foi intencionalmente deixado em branco. É assim que obtemos N / A para compilar.
O padrão nulo
Imagine uma complicada e cara máquina de sinalização luminosa que pegou repetidamente uma lâmpada colorida de uma correia transportadora, enroscou-a em um soquete, ligou, removeu e pegou o próximo. Você pode controlar o que essa coisa sinaliza pela cor das lâmpadas que coloca no cinto. Ótimo, agora que finalmente está funcionando perfeitamente, seu chefe deseja que você crie uma maneira de controlar o tempo desses sinais. Ele quer adicionar um espaço entre as mensagens. Você se lembra com horror de que muitas partes se importam com o momento desses sinais e que dor foi sincronizá-los. Como você vai controlar o tempo sem que isso o mantenha no trabalho no fim de semana? Você olha para uma caixa de lâmpadas queimadas e obtém uma idéia brilhante - não literalmente.
Às vezes, você deseja usar o polimorfismo para desligar algo sem quebrar nada.
Depuração
Ao definir um ponto de interrupção, é necessário que haja um local para o ponto de interrupção. Agora, certifique-se de que alguns depuradores permitirão que você o ajuste na chave de fechamento, mas se não o fizerem, é bom que a linguagem permita que você force um local para colocar um, mesmo que esse local não faça nada.
Não é realmente uma coisa de java, mas há também:
Brincando binário
A instrução NOP de assemblies permite mexer com o executável binário compilado. Mas os compiladores java modernos otimizam muito isso, não tenho certeza de que o ponto-e-vírgula não seja apenas um absurdo. Mas antigamente, também usamos esses pontos vazios no executável para controlar o tempo ou permitir que fiquemos mais tarde. Sem o NOP, haveria instruções reais lá; portanto, se você quisesse conectar, teria que copiar essas instruções em outro lugar para dar espaço ao gancho. Isso funciona tão bem na linguagem c a partir da qual Java obtém grande parte de sua sintaxe. Mas não acho que essa brincadeira de gancho ocorra muito em Java. Usamos a Programação Orientada a Aspectos para fazer isso.