public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
String str = test.methodTest();
System.out.println("Output : "+str);
}
public String methodTest(){
for(int i=0;i<10;i++){
if(i==5){
return new String("We got 5 :)");
}
}
return null;
}
String str = null的预期输出 输出:str =我们有5:)
有人能解释我为什么会这样吗?
答案 0 :(得分:1)
i
将在for
循环的持续时间内取值0-9。但是,然后i==5
,if
语句中包含的代码将执行。此return
字符串"We got 5 :)"
和终止方法。因此,永远不会达到第二个return
语句。根据{{3}},
方法返回到[...]到达
return
语句时调用它的代码
重申,在达到第一个main
语句的外观时,控制流被放弃回调用者(在本例中为return
方法),在这种情况下,在{{1循环。
答案 1 :(得分:0)
您可能会对return
和break
声明感到困惑。 return
将结束方法并返回调用者语句。但是如果你想结束循环,那么你需要break
。对于相同代码的预期输出(str == null),您可以使用break
public String methodTest(){
for(int i=0;i<10;i++){
if(i==5){
break;
}
}
return null;
}
答案 2 :(得分:0)
for
循环将i递增1,每次迭代从0开始。一旦我等于5(因此你的代码i==5
),if
语句变为真,然后执行内部代码。然后执行return
语句,该语句退出整个方法并“返回”到调用方法,在本例中是main方法。执行return
语句后没有其他代码,包括返回空值的第二个return
语句。
如果您希望达到第二个return
语句,则可以创建全局变量,或者为methodTest
提供操作参数。
答案 3 :(得分:-1)
因为任何return
只能执行一个method
语句。从method
返回后,程序将返回该值并执行停止或终止。您只能return
1 值。如果要返回 2 或更多值,可以将值放在object中,然后return
obj
。
答案 4 :(得分:-1)
它正在回归&#34;我们得到5&#34;因为它迭代1到10而数字5在该范围内,你将返回字符串而不是null。