java中变量检查的优化
我最近一直在做编码练习,下面是我对其中一个问题的解决方案java中变量检查的优化,java,Java,我最近一直在做编码练习,下面是我对其中一个问题的解决方案 public boolean makes10(int a, int b) { return (a == 10 || b == 10 || a+b == 10); } 代码本身可以工作,但我想知道,由于变量2(a和b),是否可以进一步优化此代码两者都检查它们是否等于相同的值。我指的是a==10 | | b==10当if块中的第一个条件返回为true时,它不会移动到下一个条件true | | false=true和true | t
public boolean makes10(int a, int b) {
return (a == 10 || b == 10 || a+b == 10);
}
代码本身可以工作,但我想知道,由于变量2(a和b),是否可以进一步优化此代码两者都检查它们是否等于相同的值。我指的是
a==10 | | b==10
当if块中的第一个条件返回为true时,它不会移动到下一个条件true | | false=true
和true | true=true
,即,如果第一个参数为true,则第二个参数不进行计算,因为整个表达式必须是真的。因此,就优化而言,您当前的代码很好。
这种行为称为
从:
| |运算符与|类似(§15.22.2),但对其右侧进行求值
仅当其左侧操作数的值为false时才使用操作数。[…]在
运行时,首先计算左侧操作数表达式;[...]
如果结果值为true,则条件或
表达式为true,而右侧操作数表达式为false
评价的。如果左侧操作数的值为false,则
计算右侧表达式;[…]结果值变为
条件或表达式的值。因此,| |计算相同的值
结果为布尔或布尔操作数上的|。它的不同之处在于
右侧操作数表达式的计算是有条件的,而不是
比以往任何时候都好
不,这个看起来不错。如果
a==10
为true
,则不会检查/评估其后面的条件。我同意最后的想法,短路已经足够优化了。如果您觉得a+b==10
的频率更高,请将其放在搜索框中。@user3189142-如果a
是6
而b是10
,该怎么办p通过使用|
运算符“短路”,您已经优化了条件。除非您使用的是|
,否则它将同时计算这两个参数sides@user2650277不,没有。。。