Java 如果语句涉及相同的内容,它们是否会相互冲突?
如果您有两个Java 如果语句涉及相同的内容,它们是否会相互冲突?,java,Java,如果您有两个If语句: int n = -1; if (n < 0) return null; if (n <= 1) return "yay"; intn=-1; if(n
If
语句:
int n = -1;
if (n < 0)
return null;
if (n <= 1)
return "yay";
intn=-1;
if(n<0)
返回null;
如果(n它将返回null
顺便说一句,在Java中,“If”无效,您必须使用“If”和圆括号表示ifs,它将返回null
顺便说一句,Java中的“If”无效,必须使用“If”和圆括号表示If
它会自上而下地运行代码并在第一个IF语句处停止吗
是的,它会的。如果结果是n<0,那么它会立即返回null。(我不知道你为什么把这个问题标记为Java,你发布的代码不是Java代码。)
它会自上而下地运行代码并在第一个IF语句处停止吗
是的,它将返回null。如果结果是n<0,那么它将立即返回null。(我不知道你为什么将这个问题标记为Java,你发布的代码不是Java代码。)它将返回null,只是因为返回(在第一个测试中)意味着第二个测试将不会执行。它将返回null,只是因为返回(在第一个测试中)表示将不执行第二个测试。它将返回null
,因为这是匹配的第一个条件。在返回后,函数的其余部分不会执行,函数按顺序执行,因此它们不会冲突
“if语句冲突”的另一个示例是当您创建无法访问的代码时,例如:
if (n < 0)
return "a";
if (n == -1)
return "b";
if(n<0)
返回“a”;
如果(n==-1)
返回“b”;
此代码永远不会返回“b”,编译器可能会出错或发出警告。原因是当n=-1
时,第一条语句总是被命中,因此永远不会到达第二条语句。它将返回null
,因为这是匹配的第一个条件。返回后,函数的其余部分不会执行,函数将按以下顺序执行因此,他们永远不会发生冲突
“if语句冲突”的另一个示例是当您创建无法访问的代码时,例如:
if (n < 0)
return "a";
if (n == -1)
return "b";
if(n<0)
返回“a”;
如果(n==-1)
返回“b”;
此代码永远不会返回“b”,编译器可能会出错或发出警告。原因是当n=-1
时,第一条语句总是被命中,因此永远不会到达第二条语句。将返回null。一旦命中return语句,控件将传回调用函数,将函数的返回值设置为之后指定的值return关键字。将返回null。一旦点击return语句,控件将传回调用函数,将函数的返回值设置为return关键字后指定的值。它返回null,因为这是它遇到的第一个返回。它甚至不检查第二个异常
当代码运行时,JVM检查第一个if中的条件,当条件满足时,它执行if中的内容。如果存在return null
,则返回null。返回后,此方法中不会执行任何代码。唯一的例外情况是,您在try
块中返回,并且在该次尝试后最后返回块 它返回null,因为这是它遇到的第一个返回。它甚至不检查第二个异常
当代码运行时,JVM检查第一个if中的条件,当条件满足时,它执行if中的内容。如果存在return null
,则返回null。返回后,此方法中不会执行任何代码。唯一的例外情况是,您在try
块中返回,并且在该次尝试后最后返回块 这只是对代码的一小部分重新格式化,带有一些显式注释。我发现显式大括号有助于某些人了解发生了什么。只需遵循程序流程即可。如果函数是从中返回的,则函数中不会执行后续语句。(这是一个善意的谎言,请参阅“最终”异常处理,但除此之外……——这是一个非常程序化(逐步)的过程
intn=-1;
if(n<0){
return null;//此函数中不会执行其他语句
//如果到达这条线
}
如果(n这只是代码的一个小的重新格式化,带有一些明确的注释。我发现显式大括号有助于一些人看到发生了什么。只需遵循程序流程即可。如果函数是从返回的,则函数中不会执行后续语句。(这是一个善意的谎言,请参阅“最终”异常处理,但除此之外……——这是一个非常程序化(逐步)的过程
intn=-1;
if(n<0){
return null;//此函数中不会执行其他语句
//如果到达这条线
}
if(n第一个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;
intx=10;
if(x<0)
回来
x=0;
x
将被设置为10
x
,这是10
实际上不是<0
,因此if
语句的主体将被跳过。x
将被设置为0第一个if
语句当然将首先被求值。n
这是-1
事实上