¿Cómo se diferencia una instrucción return
de la declaración break
?.
Si tengo que salir de una condición if, ¿cuál debería preferir, return
o break
?Diferencia entre las declaraciones de devolución y ruptura
Respuesta
ruptura se utiliza cuando se quiere salir del bucle, mientras que retorno se utiliza para volver al paso donde se llamó o detener la ejecución posterior.
No podrá salir solo de una condición if
usando return
o break
.
return
se usa cuando necesita regresar de un método después de que se finaliza su ejecución/no desea ejecutar el resto del código del método. Entonces, si usa return
, no solo regresará de su condición if
, sino también de todo el método.
considerar el siguiente método -
public void myMethod()
{
int i = 10;
if(i==10)
return;
System.out.println("This will never be printed");
}
este caso, utilizando return
causas para detener la ejecución de todo el método después de la línea 3 y la ejecución vuelve a su llamador.
break
se utiliza para salir de una declaración loop
o switch
. Considere este ejemplo -
int i;
for(int j=0; j<10; j++)
{
for(i=0; i<10; i++)
{
if(i==0)
break; // This break will cause the loop (innermost) to stop just after one iteration;
}
if(j==0)
break; // and then this break will cause the outermost loop to stop.
}
switch(i)
{
case 0: break; // This break will cause execution to skip executing the second case statement
case 1: System.out.println("This will also never be printed");
}
Este tipo de break
declaración se conoce como unlabeled break
comunicado. Hay otra forma de ruptura, que se llama labeled break
. Considere este ejemplo -
int[][] arrayOfInts = { { 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++)
{
for (j = 0; j < arrayOfInts[i].length; j++)
{
if (arrayOfInts[i][j] == searchfor)
{
foundIt = true;
break search;
}
}
}
este ejemplo se utiliza bucles for anidados para buscar un valor en una matriz de dos dimensiones. Cuando se encuentra el valor, un salto etiquetado termina el ciclo for externo (etiquetado como "buscar").
Puede obtener más información acerca de las declaraciones break
y return
de JavaDoc
.
Él puede regresar, pero regresará de todo el método. – Kaj
@Kaj: Sí, estaba llegando a ese punto. –
break
se utiliza para salir (escape) del for
-loop, while
-loop, switch
-statement que se está ejecutando actualmente.
return
saldrá de todo el método que está ejecutando actualmente (y posiblemente devuelva un valor a la persona que llama, opcional).
Así que para responder a su pregunta (como otros han observado en los comentarios y respuestas) No se puede utilizar ya sea break
ni return
para escapar de un if-else
-statement per se. Se usan para escapar de otros ámbitos.
Considere el siguiente ejemplo. El valor de x
dentro del while
-loop determinará si el código de abajo el bucle se ejecuta o no:
void f()
{
int x = -1;
while(true)
{
if(x == 0)
break; // escape while() and jump to execute code after the the loop
else if(x == 1)
return; // will end the function f() immediately,
// no further code inside this method will be executed.
do stuff and eventually set variable x to either 0 or 1
...
}
code that will be executed on break (but not with return).
....
}
Notas: 'break' también termina' switch'. 'continue' irá directamente al siguiente ciclo de un' for' o 'while'. – SteeveDroz
break
rompe el lazo de corriente y continúa, mientras return
se romperá el método actual y continúa desde donde se llama ese método
Sin ofender, pero ninguna de las otras respuestas (hasta ahora) lo tiene todo bien.
break
se usa para terminar inmediatamente un bucle for
, un bucle o una declaración while
switch
. No puede break
desde un bloque if
.
return
se utiliza para finalizar un método (y posiblemente devolver un valor).
A return
dentro de cualquier bucle o bloque, por supuesto, también terminará inmediatamente ese bucle/bloque.
sí, puedo romper si. – Mistu4u
Si desea salir de un simple if else
declaración, pero aún se mantiene dentro de un contexto particular (no volviendo al contexto de llamada), sólo se puede establecer la condición de bloque en false:
if(condition){
//do stuff
if(something happens)
condition = false;
}
Esta voluntad garantizar que no hay más ejecución, de la manera que yo creo que usted lo quiere ... Usted solo puede usar break en un loop
o switch case
El retorno saldrá del método, como otros ya han señalado. Si tiene que saltar un poco más de una parte del método, puede utilizar la rotura, incluso sin un bucle:
label: if (some condition) {
// some stuff...
if (some other condition) break label;
// more stuff...
}
Tenga en cuenta, que esto no suele ser un buen estilo, aunque útil a veces.
En este código, se itera hasta 3, luego termina el ciclo;
int function (void)
{
for (int i=0; i<5; i++)
{
if (i == 3)
{
break;
}
}
}
En este código, se itera hasta 3 pero con una salida;
int function (void)
{
for (int i=0; i<5; i++)
{
if (i == 3)
{
return i;
}
}
}
ruptura simplemente rompe el bucle de retorno & obtiene el control de nuevo a la persona que llama método.
¿En qué se diferencia una declaración de devolución de una declaración de interrupción ?. La declaración de devolución sale de la ejecución actual del método y devuelve valor al método de llamada. Break se usa para salir de cualquier bucle.
Si tengo que salir de una condición if, ¿cuál debería preferir, devolver o romper?
Para salir de la ejecución del método, use return. para salir de cualquier bucle, puede utilizar el break o el return en función de sus necesidades.
Utiliza break dentro de un bucle para salir y en la declaración del interruptor.
Utiliza devuelve en la función para devolver un valor.El estado de retorno finaliza la función y devuelve el control al lugar donde se llamó a la función.
Aquí se puede ver la diferencia exacta entre ruptura, siguen y retorno con ejemplos: http://nanajanashia.com/break-continue-return/
ruptura: - El presente estado de transferencia de bypass el flujo correcto de la ejecución al exterior del bucle de corriente omitiendo la iteración restante
class test
{
public static void main(String []args)
{
for(int i=0;i<10;i++)
{
if(i==5)
break;
}
System.out.println(i);
}
}
output will be
0
1
2
3
4
Continuar: -Esta declaración de transferencia será por pase el flujo de ejecución al punto de inicio del ciclo inorder para continuar con la siguiente iteración omitiendo todas las instrucciones restantes.
class test
{
public static void main(String []args)
{
for(int i=0;i<10;i++)
{
if(i==5)
continue;
}
System.out.println(i);
}
}
output will be:
0
1
2
3
4
6
7
8
9
retorno: - En cualquier momento en un método de la declaración de retorno puede ser utiliza para provocar la ejecución en rama al llamador del método. Por lo tanto, la instrucción return termina inmediatamente el método en el que se ejecuta . El siguiente ejemplo ilustra este punto. Aquí, return hace que la ejecución regrese al sistema de tiempo de ejecución de Java, , ya que es el sistema en tiempo de ejecución que llama a main().
class test
{
public static void main(String []args)
{
for(int i=0;i<10;i++)
{
if(i==5)
return;
}
System.out.println(i)
}
}
output will be :
0
1
2
3
4
Break
declaración se romperá todo el bucle y ejecutar el código después de bucle y Return
no ejecutará el código después de que return
declaración y ejecutar el bucle con el siguiente incremento.
rotura
for(int i=0;i<5;i++){
print(i)
if(i==2)
{
break;
}
}
de salida: 0 1
retorno
for(int i=0;i<5;i++)
{
print(i)
if(i==2)
{
return;
}
}
de salida: 0 1 3 4
- 1. ¿Diferencia entre ruptura y continuar en PHP?
- 2. diferencia entre las declaraciones const en C++
- 3. DIferencia entre los procedimientos almacenados y las declaraciones preparadas ..?
- 4. Diferencia entre Enum y Definir declaraciones
- 5. ¿Implica C++ declaraciones de devolución?
- 6. Declaraciones automáticas de inserción y devolución de punto y coma
- 7. ¿Hay alguna diferencia entre usar múltiples declaraciones if y declaraciones if if?
- 8. ¿Cuál es la diferencia entre estas declaraciones en C?
- 9. ¿Cuál es la diferencia entre estas dos declaraciones de matriz?
- 10. diferencia entre las referencias y punteros
- 11. Diferencia entre las clases System.StringComparer y System.StringComparison?
- 12. Diferencia entre las clases java.rmi.registry.Registry y java.rmi.Naming
- 13. ¿Diferencia entre las páginas .asp y .aspx?
- 14. Diferencia entre las funciones read.table y read.delim
- 15. ¿Cuál es la diferencia entre estas dos declaraciones (Entity Framework)
- 16. ¿Diferencias de rendimiento entre las declaraciones de color?
- 17. ¿Hay una diferencia de rendimiento entre las declaraciones de obtención de PDO?
- 18. Diferencia entre onItemClickListener y OnItemSelectedListener de AdapterView
- 19. ¿Cuál es la diferencia entre estas dos declaraciones?
- 20. ruptura de if y foreach
- 21. Diferencia entre JOIN y INNER JOIN
- 22. La diferencia entre $ * y $ @
- 23. ¿Diferencia entre las codificaciones UTF?
- 24. Diferencia entre .MakeArrayType() y .MakeArrayType (1)
- 25. ¿Diferencia de rendimiento entre las compilaciones de VALA y AOT?
- 26. Diferencia entre & y &
- 27. ¿Diferencia entre == y caso?
- 28. Diferencia entre foo.setVisibility (View.GONE) y parent.removeView (foo)
- 29. MySQL: diferencia entre ', `,' y"
- 30. Diferencia entre objeto y *?
¿Qué quiere decir por la salida de una condición if ? Normalmente, solo utiliza sentencias break in switch o bucles, y utiliza return cuando desea volver al invocador de un método. No importa si usa Android o no. La respuesta sigue siendo la misma :) – Kaj
Quiero decir, si la condición no está satisfecha, no quiero más ejecuciones. –
Debería en ese caso regresar. – Kaj