为什么方法不返回null,如果方法包含另一个循环返回

时间:2016-06-09 05:48:46

标签: java

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:)

有人能解释我为什么会这样吗?

5 个答案:

答案 0 :(得分:1)

i将在for循环的持续时间内取值0-9。但是,然后i==5if语句中包含的代码将执行。此return字符串"We got 5 :)"终止方法。因此,永远不会达到第二个return语句。根据{{​​3}},

  

方法返回到[...]到达return语句时调用它的代码

重申,在达到第一个main语句的外观时,控制流被放弃回调用者(在本例中为return方法),在这种情况下,在{{1循环。

答案 1 :(得分:0)

您可能会对returnbreak声明感到困惑。 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。