Kode ini membuat saya menatap layar saya selama beberapa menit:
loop:
for (;;) {
// ...
}
Saya belum pernah melihat ini sebelumnya, dan saya tidak tahu Java memiliki kata kunci "loop" (NetBeans bahkan tidak mewarnainya seperti kata kunci), dan itu dapat dikompilasi dengan baik dengan JDK 6.
Apa penjelasannya?
java
labeled-statements
Amy B
sumber
sumber
Seperti yang dikatakan poster lain, ini adalah label, bukan kata kunci. Menggunakan label memungkinkan Anda melakukan hal-hal seperti:
Ini memungkinkan putusnya loop luar.
Tautan ke dokumentasi .
sumber
Pertanyaannya sudah terjawab, tapi sebagai catatan tambahan:
Saya pernah mendengar pertanyaan wawancara a la "Mengapa kode Java ini valid?" (menghapus contoh yang lebih sederhana; inilah yang lebih kejam, terima kasih Tim Büthe):
Apakah Anda semua tahu apa kode ini (selain mengerikan)?
Solusi: dua label,
url
danhttp
, komentarwww.myserver.com/myfile.mp3
dan pemanggilan metode dengan parameter yang memiliki nama yang sama (url
) sebagai label. Ya, ini mengkompilasi (jika Anda mendefinisikan panggilan metode dan variabel lokal di tempat lain).sumber
Itu bukan kata kunci, itu label. Ini dimaksudkan untuk digunakan dengan kata kunci
break
dancontinue
di dalam loop bersarang:sumber
inner
label tidak berguna di sini,break;
sudah cukupinner
label untuk kejelasan.Ini bukan kata kunci; itu a label .
Ini memungkinkan Anda untuk pergi berlabel
break
dan diberi labelcontinue
.sumber
Ini benar-benar merupakan balasan untuk komentar seanizer pada jawaban org.life.java, tetapi saya ingin memasukkan beberapa kode sehingga saya tidak dapat menggunakan fitur komentar.
Meskipun sangat jarang saya menemukan penggunaan untuk "label istirahat", itu terjadi sesekali. Kasus paling umum adalah ketika saya mencari sesuatu yang ada dalam struktur yang membutuhkan loop bersarang untuk mencari, seperti:
Biasanya dalam kasus seperti itu saya mendorong semuanya ke dalam subrutin sehingga pada pukulan saya dapat mengembalikan objek yang ditemukan, dan jika jatuh ke bagian bawah loop saya dapat mengembalikan null untuk menunjukkan tidak ditemukan, atau mungkin melempar pengecualian. Tapi ini terkadang berguna.
Terus terang, menurut saya penemu Java menyertakan fitur ini karena antara penanganan ini dan pengecualian, mereka menghilangkan dua penggunaan sah terakhir untuk GOTO.
Adendum yang sangat terlambat:
Saya pernah melihat baris kode lelucon yang bagus. Programmer menulis:
Sebenarnya dia tidak mengatakan "example.com", tetapi situs web perusahaan kami.
Ini memberi kesan bahwa ada URL di kode. Itu berhasil dikompilasi, seperti melakukan sesuatu. Tapi ... apa fungsinya?
Pada kenyataannya itu tidak melakukan apa-apa. "http:" adalah label yang tidak pernah dia referensikan. Kemudian "//" membuat sisa baris menjadi komentar.
sumber
Ini adalah label break point, untuk memungkinkan Anda keluar dari loop tertentu, bukan hanya loop terdalam tempat Anda berada.
Ini digunakan di baris 148 .
sumber
Anda bisa menulis hampir semua hal, karena ini adalah label ... Anda punya contoh di sini
sumber
Itu adalah label, meskipun lihat contoh berikut:
Saat
b>10
aliran eksekusi masuk ke loop luar.sumber
Ini adalah label, dan label di Java dapat digunakan dengan kata kunci
break
dancontinue
untuk kontrol tambahan atas loop.Di sini dijelaskan dengan cara yang cukup baik:
Berpikir di Jawa, istirahat dan lanjutkan
sumber
Ini bukan kata kunci, tapi label . Jika di dalam
for
loop Anda menulisbreak loop;
, dan Anda keluar dari loop itu.sumber
Itu adalah label. Umumnya label digunakan di Java untuk mentransfer aliran kontrol di lokasi yang diinginkan sementara semua kata kunci, seperti lanjutkan dan putus, memiliki pilihan lokasi tertentu.
sumber