[英]Difference between Return and Break statements
return
语句与break
语句有何不同?
如果我必须退出 if 条件,我应该更喜欢哪一个, return
或break
?
break
用于退出(转义)您当前正在执行的for
循环、 while
循环、 switch
语句。
return
将退出您当前正在执行的整个方法(并可能向调用者返回一个值,可选)。
因此,要回答您的问题(正如其他人在评论和答案中指出的那样),您不能使用break
或return
来逃避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 返回到调用它的步骤或停止进一步执行。
您将无法使用return
或break
仅从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
用于从loop
或switch
语句中跳出。 考虑这个例子 -
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
了解更多关于break
和return
语句的信息。
没有冒犯,但没有其他答案(到目前为止)完全正确。
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;
}
这将保证没有进一步的执行,我认为你想要的方式..你只能在loop
或switch case
中使用 break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.