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不,没有。。。