2010-05-22 14 views
10

herhangi biri benim için bu talimatı açıklar mısınız Nedir: Bu işaretinin (;;)Java: "(;;) için"

karşılaştığım birkaç çeşit için (gibi facebook ajax kodu ve eşzamanlı olarak Java içinde).

+3

#define EVER ;; (EVER) // için ... – Andrew

cevap

23

Sonsuz bir döngü.

Bir for döngüsünün (for(x; y; z)) üç bölümünün her biri isteğe bağlıdır.

int i = 0; 
for (; i < 20; ++i) 

ve tamamen geçerli, ya

for (int i = 0; i < 20;) { ++i; } 

veya

for (int i = 0; ; ++i) { if (i < 20) { break; } } 

ve hepsi geçerli konum:

Yani bunu yapabilirsiniz.

Ayrıca üç parçayı da for(;;) ile çıkarabilirsiniz.

  • hiçbir başlatma (ilk bölüm)
  • durdurmak için hiçbir koşul (orta kısım)
  • yapar her tekrardan sonra hiçbir şey (son bölüm) sahiptir
yapar: O halde bir döngü var

temel olarak sonsuz bir döngüdür. Sadece döngü gövdesinde ne yazıyorsa, tekrar tekrar

+0

Başvuru için Java Dil Spesifikasyonu §14.14.1.2 http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.1.2 adresine bakın: "_Expression_ mevcut değilse veya mevcutsa ve değerlendirmesinden kaynaklanan değer (olası herhangi bir kutulama dahil değil), "true", sonra içerilen * Bildirim * çalıştırılır. " –

+9

Bu yanıt," Asıl soru çok basit "politikasının asılsızlığını kanıtlıyor. :) –

6

Bu sonsuz bir döngüdür. for ifadesinin açıklaması için bkz. here.

while(true) 
{ 
    ... 
} 
5

, (varolmayan) çıkış koşulu olarak görülmeye yanlış olmayacak. bir çıkış durumu olmaksızın döngü için

herhangi

sonsuz olur: while (true) olarak

for (int x=0; ; x++) { } 

tamamen aynı, biraz daha az okunabilir IMHO rağmen.

2

Its sonsuz döngü benzer sonsuz bir döngü var

2

Bu gerçekten sonsuz bir döngüdür. Ancak Java'da, daha okunabilir olduğundan (muhtemelen daha önce fark ettiğiniz) while (true)'u gerçekten for (;;)'u tercih etmelisiniz. Derleyici yine de optimize eder. JavaScript'te, bir derleyicinin ve HTTP sayımları üzerinden her baytın hiçbir yolu yoktur, bu nedenle for (;;)'un tercih edilmesinin nedeni budur. Birkaç karakter (bayt) kaydeder.

+0

+1 okunabilirliği için while (true) ' – whiskeysierra

+0

Daha kolay okunabilmesi için (;;)' için '' ı buluyorum. – jalf

2

döngü için sözdizimi

for (init-stmt; condition; next-stmt) { 

} 

Yani basitçe bir hayır ilk açıklamada, bir sonraki deyimi veya koşulu ile döngü olmasıdır. Çıkış koşulunun yokluğu onu sınırsız kılar.