Wolę używać pętli while , ale wyrażenie puste pozwala napisać to:
for (;;) { thread.run(); }
Jednak instrukcja zerowa pozwala napisać to:
while(true);
{
thread.run();
}
Jego głównym celem jest marnowanie czasu słabego programisty konserwacji, który idzie za tobą i zastanawia się, dlaczego wątek nie działa. Oświadczenie musi nastąpić chwilę. Sam ; jest stwierdzeniem. Tak więc ten blok instrukcji nie jest właściwie częścią pętli.
To nie znaczy, że nie ma dobrych zastosowań. Są po prostu rzadkie. Zwykle wyglądają tak:
{
;
}
Ponieważ w ten sposób wygląda to tak, jakbyś chciał to zrobić (nawet to czasem nie wystarcza).
W zestawie ta instrukcja zerowa nosi nazwę a NOP . W Pythonie nazywa się to pass . W java (i innych dzieciach z c) jest to średnik, jak powiedziałeś, a nawet potwierdzasz prawdę;
Znam kilka zastosowań:
Semantyczny .
Istnieje różnica między pustą przestrzenią a położeniem zera jako odpowiedzi. To wyraźnie mówi: nie, nie zapomniałem tu coś umieścić. To nic nie ma być niczym. To wyraźnie nic. To miejsce celowo pozostawiono puste. W ten sposób kompilujemy N / A.
Wzór zerowy
Wyobraź sobie skomplikowaną i kosztowną maszynę sygnalizacji świetlnej, która wielokrotnie podniosła kolorową żarówkę z przenośnika taśmowego, wkręciła ją w gniazdo, włączyła, wyjęła i podniosła następną. Możesz kontrolować, co ta rzecz sygnalizuje kolorem żarówek umieszczonych na pasku. Świetnie, teraz, gdy wreszcie działa bez zarzutu, twój szef chce, abyś stworzył sposób kontrolowania synchronizacji tych sygnałów. Chce dodać przerwę między wiadomościami. Z przerażeniem pamiętasz, że wiele części dba o synchronizację tych sygnałów i jak trudno było je zsynchronizować. Jak zamierzasz kontrolować czas bez utrzymywania cię w pracy przez weekend? Patrzysz na kosz z wypalonymi żarówkami i dostajesz, no dosłownie, świetny pomysł.
Czasami chcesz użyć polimorfizmu, aby po prostu coś wyłączyć, nie niszcząc niczego.
Debugowanie
Po ustawieniu punktu przerwania musi istnieć miejsce, w którym powinien znajdować się punkt przerwania. Teraz na pewno niektóre debuggery pozwolą ci ustawić go na zamykającym nawiasie klamrowym, ale jeśli nie, to fajnie, że język pozwala ci zmusić miejsce do umieszczenia, nawet jeśli to miejsce nic nie robi.
Naprawdę nie jest to sprawa Java, ale są też:
Binarne majstrowanie
Instrukcja NOP asemblowania pozwala na manipulowanie skompilowanym binarnym plikiem wykonywalnym. Ale współczesne kompilatory Java tak bardzo się optymalizują. Nie jestem pewien, czy średnik po prostu się nie psuje. Ale w dawnych czasach używaliśmy również tych pustych miejsc w pliku wykonywalnym do kontrolowania synchronizacji lub pozwalania nam później wpadać w haczyk. Bez NOP byłyby tam aktualne instrukcje, więc jeśli chcesz zaczepić, musisz skopiować te instrukcje gdzie indziej, aby zrobić miejsce na zaczep. Działa to równie dobrze w języku c, z którego Java czerpie dużą część swojej składni. Ale nie sądzę, że ten haczyk na skrzypcach zdarza się często w Javie. W tym celu używamy programowania zorientowanego na aspekty .