gpt4 book ai didi

java - 短路与多个 if's

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:22 24 4
gpt4 key购买 nike

这之间有什么区别:

if(a && b)
{
//code
}

还有这个:

if(a)
{
if(b)
{
//code
}
}

据我所知,如果 a 为真,b 只会在第一个代码块中被求值,第二个代码块也是一样。

使用一个比另一个有什么好处吗?代码执行时间?内存?等

最佳答案

它们被编译成相同的字节码。没有性能差异。

可读性是唯一的区别。作为一个巨大的概括,短路看起来更好,但嵌套更清晰。它真的归结为特定的用例。我通常会短路。


我试过了。这是代码:

public class Test {

public static void main(String[] args) {
boolean a = 1>0;
boolean b = 0>1;

if (a && b)
System.out.println(5);

if (a)
if (b)
System.out.println(5);
}
}

编译为:

  0: iconst_1
1: istore_1
2: iconst_0
3: istore_2
4: iload_1
5: ifeq 19
8: iload_2
9: ifeq 19
12: getstatic #2
15: iconst_5
16: invokevirtual #3
19: iload_1
20: ifeq 34
23: iload_2
24: ifeq 34
27: getstatic #2
30: iconst_5
31: invokevirtual #3
34: return

注意这个 block 是如何重复两次的:

  4: iload_1
5: ifeq 19
8: iload_2
9: ifeq 19
12: getstatic #2
15: iconst_5
16: invokevirtual #3

两次相同的字节码。

关于java - 短路与多个 if's,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173307/

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