2011-07-08 8 views
36

¿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

+5

¿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

+0

Quiero decir, si la condición no está satisfecha, no quiero más ejecuciones. –

+0

Debería en ese caso regresar. – Kaj

Respuesta

39

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.

9

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.

+0

Él puede regresar, pero regresará de todo el método. – Kaj

+0

@Kaj: Sí, estaba llegando a ese punto. –

69

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). 
    .... 
} 
+0

Notas: 'break' también termina' switch'. 'continue' irá directamente al siguiente ciclo de un' for' o 'while'. – SteeveDroz

1

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

6

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 whileswitch. 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.

+0

sí, puedo romper si. – Mistu4u

-1

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

2

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.

0

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; 
     } 
    } 
} 
0

ruptura simplemente rompe el bucle de retorno & obtiene el control de nuevo a la persona que llama método.

0

¿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.

2

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/

2

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 
0

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

Cuestiones relacionadas