繁体   English   中英

Return 和 Break 语句之间的区别

[英]Difference between Return and Break statements

return语句与break语句有何不同?
如果我必须退出 if 条件,我应该更喜欢哪一个, returnbreak

break用于退出(转义)您当前正在执行的for循环、 while循环、 switch语句。

return将退出您当前正在执行的整个方法(并可能向调用者返回一个值,可选)。

因此,要回答您的问题(正如其他人在评论和答案中指出的那样),您不能使用breakreturn来逃避if-else语句本身。 它们用于转义其他范围。


考虑以下示例。 while循环中x的值将决定循环下面的代码是否会被执行:

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

当您想退出循环时使用break ,而return用于 go 返回到调用它的步骤或停止进一步执行。

您将无法使用returnbreak仅从if条件中退出。

当不想执行方法代码的rest时,需要在方法执行完成后从方法return时使用return。 因此,如果您使用return ,那么您不仅会从if条件中返回,还会从整个方法中返回。

考虑以下方法:

public void myMethod()
{
    int i = 10;

    if(i==10)
        return;

    System.out.println("This will never be printed");
}

在这里,使用return导致在第 3 行之后停止整个方法的执行,并且执行返回到它的调用者。

break用于从loopswitch语句中跳出。 考虑这个例子 -

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");
}

这种类型的break语句称为无unlabeled break语句。 还有另一种形式的中断,称为labeled break 考虑这个例子 -

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

此示例使用嵌套的 for 循环来搜索二维数组中的值。 当找到该值时,一个标记的 break 终止外部 for 循环(标记为“搜索”)。

您可以从JavaDoc了解更多关于breakreturn语句的信息。

没有冒犯,但没有其他答案(到目前为止)完全正确。

break用于立即终止for循环、 while循环或switch语句。 你不能break if块。

return用于终止一个方法(并可能返回一个值)。

任何循环或块内的return当然也会立即终止该循环/块。

break:- 这些转移语句通过跳过剩余的迭代绕过正确的执行流程到当前循环之外

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

继续:-这些转移语句将绕过执行流程到循环的起点,以便通过跳过所有剩余指令来继续下一次迭代。

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 

return:- 在方法中的任何时候,return 语句都可用于使执行分支回到方法的调用者。 因此,return 语句立即终止执行它的方法。 下面的例子说明了这一点。 这里,return 导致执行返回到 Java 运行时系统,因为它是调用 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语句将中断整个循环并执行循环之后的代码, Return不会执行该return语句之后的代码并执行下一个增量的循环。

休息

for(int i=0;i<5;i++){
    print(i)
    if(i==2)
    {
      break;
    }
}

output:0 1

返回

for(int i=0;i<5;i++)
{
   print(i)
   if(i==2)
   {
    return;
   }
}

output:0 1 3 4

您使用break打破循环或 switch 语句。

您在 function 中使用return来返回一个值。 Return 语句结束 function 并将控制返回到调用 function 的位置。

 def print_numbers(): for i in range(0, 5): print('i will print',i) if i == 2: break def get_number(): for i in range(0, 5): if i == 2: return i print_numbers() number = get_number() print('i got ',number)

在 print_numbers function 中,break 将停止 for 循环。 在 get_numbers 中,由于 return 语句,您将收到响应。

上述程序的output:

 i will print 0 i will print 1 i will print 2 i got 2

break中断当前循环并继续,而return它将中断当前方法并从您调用该方法的位置继续

正如其他人已经指出的那样, Return 将退出该方法。 如果您需要跳过该方法的某些部分,您可以使用 break,即使没有循环:

label: if (some condition) {
    // some stuff...
    if (some other condition) break label;
    // more stuff...

}

请注意,这通常不是好的风格,尽管有时很有用。

Break 只会停止循环,而在循环内返回将停止循环并从 function 返回。

break 只是打破循环 & return 将控制权返回给调用者方法。

return 语句与 break 语句有何不同? Return 语句退出当前方法执行并将值返回给调用方法。 Break 用于退出任何循环。

如果我必须退出一个 if 条件,我应该更喜欢哪一个,返回还是中断?

要退出方法执行,请使用 return。 要退出任何循环,您可以根据您的要求使用 break 或 return。

在这段代码中 i 被迭代到 3 然后循环结束;

int function (void)
{
    for (int i=0; i<5; i++)
    {
      if (i == 3)
      {
         break;
      }
    }
}

在此代码中,我迭代到 3,但使用 output;

int function (void)
{
    for (int i=0; i<5; i++)
    {
      if (i == 3)
      {
         return i;
      }
    }
}

如果你想从一个简单的if else语句中退出,但仍然停留在一个特定的上下文中(不是通过返回调用上下文),你可以将块条件设置为 false:

if(condition){
//do stuff
   if(something happens)
        condition = false;
}

这将保证没有进一步的执行,我认为你想要的方式..你只能在loopswitch case中使用 break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM