gpt4 book ai didi

java - 条件或运算符(||)的短路行为

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:52 27 4
gpt4 key购买 nike

条件运算符 && 和 ||根据
短路 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html ,这意味着有时不需要计算第二个操作数。

有人可以提供一个条件或(||)运算符被短路的例子吗?

使用条件与 (&&) 运算符,短路行为非常简单,如下所示:

if(false && (1 > 0)) 那么第二个操作数:(1 >0) 不需要求值,但似乎无法找到/想到条件或的示例。

最佳答案

当第一个操作数为真时,or 运算符被短路。所以,

String foo = null;
if (true || foo.equals("")) {
// ...
}

不会抛出 NullPointerException

正如@prajeesh 在评论中正确指出的那样,在实际代码中使用短路的方式是在处理可能返回 null 的 API 时防止 NullPointerException。因此,例如,如果有一个 readStringFromConsole 方法返回当前可用的字符串,如果用户没有输入任何内容则返回 null,我们可以这样写

String username = readStringFromConsole();
while (username == null || username.length() == 0) {
// No NullPointerException on the while clause because the length() call
// will only be made if username is not null

System.out.println("Please enter a non-blank name");
username = readStringFromConsole();
}

// Now do something useful with username, which is non-null and of nonzero length

附带说明一下,只要用户未键入任何内容,返回用户输入的 API 都应返回空字符串,并且不应返回 null。返回 null 表示“没有可用的内容”,而返回空字符串表示“用户没有输入任何内容”,因此是首选。

关于java - 条件或运算符(||)的短路行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164975/

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