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 la colorea como una palabra clave), y se compila bien con JDK 6.
Cual es la explicacion
java
labeled-statements
Amy B
fuente
fuente
Como han dicho otros carteles, es una etiqueta, no una palabra clave. El uso de etiquetas le permite hacer cosas como:
Esto permite romper el bucle exterior.
Enlace a la documentación .
fuente
La pregunta está respondida, pero como nota al margen:
He oído hablar de preguntas de entrevistas a la "¿Por qué es válido este código Java?" (eliminó el ejemplo más simple; aquí está el más malo, gracias Tim Büthe):
¿Sabrían todos qué es este código (aparte de horrible)?
Solución: dos etiquetas,
url
yhttp
, un comentariowww.myserver.com/myfile.mp3
y una llamada de método con un parámetro que tiene el mismo nombre (url
) como la etiqueta. Sí, esto se compila (si define la llamada al método y la variable local en otro lugar).fuente
Esa no es una palabra clave, es una etiqueta. Está destinado a usarse con las palabras clave
break
ycontinue
dentro de los bucles anidados:fuente
inner
la etiqueta es inútil aquí,break;
es suficienteinner
etiqueta por claridad.No es una palabra clave; es una etiqueta .
Te permite ir etiquetado
break
y etiquetadocontinue
.fuente
Esta es realmente una respuesta al comentario de seanizer sobre la respuesta de org.life.java, pero quería poner algo de código para no poder usar la función de comentarios.
Si bien es muy raro que encuentre un uso para "rotura de etiqueta", ocurre ocasionalmente. El caso más común es cuando estoy buscando algo que está en una estructura que requiere un bucle anidado para buscar, como:
Por lo general, en tales casos, empujo todo en una subrutina para que en un golpe pueda devolver el objeto encontrado, y si cae al final del bucle, puedo devolver un valor nulo para indicar que no se encontró, o tal vez lanzar una excepción. Pero esto es útil en ocasiones.
Francamente, creo que los inventores de Java incluyeron esta característica porque entre esto y el manejo de excepciones, eliminaron los dos últimos usos legítimos de GOTO.
Addendum muy tardío:
Una vez vi una gran línea de código mordaza. El programador escribió:
En realidad, no dijo "example.com", sino el sitio web de nuestra empresa.
Da la impresión de que hay una URL en el código. Se compila con éxito, como si hiciera algo. ¿Pero, qué hace?
En realidad, no hace nada. "http:" es una etiqueta a la que nunca hace referencia. Luego, el "//" convierte el resto de la línea en un comentario.
fuente
Es una etiqueta de punto de ruptura, para permitirle salir de un bucle específico, en lugar de simplemente el más interno en el que se encuentra.
Se usa en la línea 148 .
fuente
Podrías escribir casi cualquier cosa, ya que es una etiqueta ... Tienes un ejemplo aquí
fuente
Es una etiqueta, aunque mira el siguiente ejemplo:
Cuando
b>10
el flujo de ejecución va al bucle exterior.fuente
Es una etiqueta, y las etiquetas en Java se pueden usar con
break
ycontinue
palabras clave para un control adicional sobre los bucles.Aquí se explica de una manera bastante buena:
Pensando en Java, romper y continuar
fuente
No es una palabra clave, sino una etiqueta . Si está dentro del
for
bucle, escribebreak loop;
y sale de ese bucle.fuente
Es una etiqueta. Generalmente, una etiqueta que se usa en Java para transferir el flujo de control a la ubicación deseada, mientras que todas las palabras clave, como continuar y romper, tienen una opción específica de ubicación.
fuente