如果您有两个if
语句:
int n = -1;
if (n < 0)
return null;
if (n <= 1)
return "yay";
它会返回null还是yay?它会从上到下运行代码并在第一个if
语句处停止,还是会使用最后一个?
答案 0 :(得分:3)
当然,将首先评估第一个if
语句。 n
-1
实际上是< 0
,因此将执行与该if
语句关联的代码体。 null
将被退回。
可能让您感到困惑的是,尽管第二个if
语句将评估为true,但它永远不会被评估。这是因为return
语句在执行时会保留它所在的函数/方法。
如果你写了:
int x = 0;
return x;
x = 5;
x
将设置为0
。 x
将被退回。返回后的任何代码行都不会执行。
这是另一个例子,澄清:
int x = 10;
if(x < 0)
return;
x = 0;
x
将设置为10
。 x
10
实际上不是 < 0
,因此将跳过if
语句的正文。 x
将设置为0
。
答案 1 :(得分:1)
它将返回null,只是因为返回(在第一次测试中)意味着第二次测试不会被执行。
答案 2 :(得分:1)
它将返回null
,因为它是匹配的第一个条件。返回后,其余的函数不会被执行,函数会按顺序执行,因此它们永远不会发生冲突。
“冲突的if语句”的另一个示例是当您创建无法访问的代码时,例如:
if (n < 0)
return "a";
if (n == -1)
return "b";
此代码永远不会返回“b”,编译器可能会出错或发出警告。原因是当n = -1
时,第一个语句总是被命中,所以永远不会达到第二个语句。
答案 3 :(得分:1)
它返回null,因为它是它遇到的第一个返回。它甚至没有检查第二个例外。
当代码运行时,JVM检查第一个if中的条件,当满足条件时,它执行if if中的内容。如果有return null
则返回null。返回后,此方法中不执行任何代码。唯一的例外是您在此次尝试后返回try
块和finally
块。
答案 4 :(得分:1)
这只是代码的一个小型重新格式,带有一些明确的注释。我发现明确的括号可以帮助一些人看到发生了什么。 只需按照程序流程即可。 如果返回函数,则函数中不会执行任何后续语句。(这是一个白色的谎言,请参阅'finally'异常处理,但禁止...) - 它是一个非常程序化(逐步)过程。
int n = -1;
if (n < 0) {
return null; // no other statement in this function will be executed
// if this line is reached
}
if (n <= 1) {
return "yay"; // no other statement in this function will be executed
// if this line is reached
}
答案 5 :(得分:0)
它将返回null。
btw in Java“如果”无效,你必须使用if的“if”和圆括号
答案 6 :(得分:0)
它是否会从上到下运行代码并在第一个IF语句处停止
是的,它会的。如果确实证明n&lt; 0,然后它会立即返回null。 (我不知道为什么你把这个问题标记为Java,你发布的代码不是Java代码。)
答案 7 :(得分:0)
将返回null。一旦你点击return语句控制权传递回调用函数设置函数的返回值到你在return关键字后指定的值。
答案 8 :(得分:0)
它将返回null。您发布的将导致'Yay'返回的代码的唯一值为0。