new icon example borderfactory java labeled-statements

icon - "Loop:" en código Java. ¿Qué es esto? ¿Por qué compila?



my icon java (12)

Como han dicho otros carteles, es una etiqueta, no una palabra clave. Usar etiquetas te permite hacer cosas como

outer: for(;;) { inner: for(;;) { break outer; } }

Esto permite la ruptura del bucle externo.

EDITAR: con enlace a la documentación

Este código me hizo mirar fijamente mi pantalla durante unos minutos:

loop: for (;;) { // ... }

( línea 137 aquí )

Nunca había visto esto antes, y no tenía idea de que Java tiene una palabra clave de "bucle" (Netbeans ni siquiera lo colorea como una palabra clave), y compila bien con JDK 6.

¿Alguien me puede explicar esto?


Es una etiqueta de punto de ruptura, para permitirle salir de un bucle especificado, en lugar de simplemente el más interno en el que se encuentra.

Se usa en la línea 148


Es una etiqueta, pero mira el siguiente ejemplo:

int a = 0; int b = 0 while (a<10){ firstLoop: a++; while(true){ b++ if(b>10){ break firstLoop; } } }

Cuando b>10 el flujo de ejecución va al bucle externo



Esa no es una palabra clave, es una etiqueta. Está destinado a ser utilizado con las palabras clave break y continue dentro de bucles anidados:

outer: for(;;){ inner: for(;;){ if(){ break inner; // ends inner loop } else { break outer; // ends outer loop } } }


Esta es realmente una respuesta al comentario de seanizer sobre la respuesta de org.life.java, pero quería poner un código para que no pudiera usar la función de comentarios.

Si bien es muy raro que encuentre un uso para "etiqueta de ruptura", sucede de vez en cuando. El caso más común es cuando estoy buscando algo que está en una estructura que requiere un bucle anidado para buscar, como:

search: for (State state : stateList) { for (City city : state.cityList) { if (city.zipcode.equals(wantZip)) { doSomethingTo(city); break search; } } }

Por lo general, en tales casos, inserto todo en una subrutina para poder devolver el objeto encontrado con un golpe, y si cae al final del ciclo, puedo devolver nulo para indicar que no se ha encontrado, o quizás lanzar una excepción. Pero esto es ocasionalmente útil.

Francamente, creo que los inventores de Java incluyeron esta característica porque entre este y el manejo de excepciones, eliminaron los dos últimos usos legítimos para GOTO.

Adenda muy tardía:

Vi una gran línea de código de mordaza una vez. El programador escribió:

http://www.example.com/xyz.jsp for (Foo foo1 : foolist)

En realidad, no dijo "example.com" sino el sitio web de nuestra compañía.

Da la impresión de que hay una URL en el código. Se compila con éxito, al igual que hace algo. ¿Pero, qué hace?

En realidad, no hace nada. "http:" es una etiqueta a la que nunca hace referencia. Luego, el "//" hace que el resto de la línea sea un comentario.


La pregunta es respondida, pero como nota al margen:

He oído hablar de preguntas de entrevistas como "¿Por qué es válido este código Java?" (Despojado del ejemplo más simple, este es el más malo, el de Tim Büthe):

url: http://www.myserver.com/myfile.mp3 downLoad(url);

¿Todos sabrían lo que es este código (aparte de horrible)?

Solución: dos etiquetas, url y http , un comentario en www.myserver.com/myfile.mp3 y una llamada a un método con un parámetro que tiene el mismo nombre ( url ) que la etiqueta. Sí, esto compila (si defines la llamada al método y la variable local en otro lugar).


No es una keyword es una label .

Uso:

label1: for (; ; ) { label2: for (; ; ) { if (condition1) { // break outer loop break label1; } if (condition2) { // break inner loop break label2; } if (condition3) { // break inner loop break; } } }

Documentation .


No es una palabra clave, es una label .

Le permite ir a un descanso etiquetado y etiquetar Continuar.


No es una palabra clave, sino una etiqueta . Si está dentro del ciclo for, escribe break loop; , sales de ese bucle


Podrías escribir casi cualquier cosa, ya que es una etiqueta ... Tienes un ejemplo here


es una etiqueta. etiqueta general utilizada en Java para transferir el flujo de control a la ubicación deseada, mientras que todas las palabras clave como continuar, romper tienen un lugar específico de ubicación.