gpt4 book ai didi

java - 如果第一个为假,则一个 if 语句中的两个条件是否第二个重要?

转载 作者:IT老高 更新时间:2023-10-28 21:04:38 26 4
gpt4 key购买 nike

好的,所以我测试了这段代码,我发现没有抛出任何异常。

public static void main(String[] args) {
int[] list = {1,2};
if (list.length>2 && list[3] == 2){
System.out.println(list[1]);
}
}

这里是不是声明

if (list.length>2 && list[3] == 2)

意味着如果第一个条件为假,我们甚至不必检查第二个条件?

或者等于

if (list.length>2){
if (list[3] == 2){
...
}
}

?

而且,如果它是用 C 或 python 或其他一些语言编写的呢?

谢谢

最佳答案

对于语言(Java 和 Python 等)来说,评估逻辑 AND 的第一个参数并在第一个参数为 false 时完成语句的评估是很常见的>。这是因为:

来自 The Order of Evaluation of Logic Operators ,

When Java evaluates the expression d = b && c;, it first checks whether b is true. Here b is false, so b && c must be false regardless of whether c is or is not true, so Java doesn't bother checking the value of c.

这被称为 short-circuit evaluation , 并且在 Java docs 中也有提及.

查看 list.count > 0 && list[0] == "Something" 来检查列表元素是否存在是很常见的。


另外值得一提的是,if (list.length>2 && list[3] == 2) 等于第二种情况

if (list.length>2){
if (list[3] == 2){
...
}
}

如果之后有 elseelse 将仅适用于它所附加的 if 语句。

为了演示这个问题:

if (x.kind.equals("Human")) {
if (x.name.equals("Jordan")) {
System.out.println("Hello Jordan!");
}
} else {
System.out.println("You are not a human!");
}

会按预期工作,但是

if (x.kind.equals("Human") && x.name.equals("Jordan")) {
System.out.println("Hello Jordan!");
} else {
System.out.println("You are not a human!");
}

还会告诉任何不是Jordan的人类他们不是人类。

关于java - 如果第一个为假,则一个 if 语句中的两个条件是否第二个重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com