这样的操作有什么操作符或者技巧吗? 还是有必要用这个:
if (5 < i && i < 10)
Java 中没有这样的东西(除非你使用布尔值)。
5<i
会在<10
左侧产生布尔值,这是编译器不喜欢的。
恐怕目前 Java 不支持链式不等式。检查this帖子了解支持的语言。
您可以使用单个比较,但比通常的值更复杂。
if (i - (Integer.MIN_VALUE + 6) < Integer.MIN_VALUE + (10 - 6))
这使用下溢将所有 5 及以下的值调整为较大的正值。
您使用它的唯一原因是作为微优化。
Java 中不能链接比较。
进行范围检查的标准方法是使用 Guava Ranges:
import com.google.common.collect.Range;
...
if(Range.open(5, 10).contains(x)){
或 Apache Commons Lang(不过它只提供封闭范围):
import org.apache.commons.lang3.Range;
...
if(Range.between(5 + 1, 10 - 1).contains(x)){
一个< x < b is equivalent to (x-a)(x-b)<0, or if x is an expression you only wanna calculate once,
(x - (a+b)/2) ^ 2 < (b-a)^2 / 4
同样处理两个非严格相等。然而,我认为没有一种方法可以处理一个严格相等和一个非严格相等(除非 x 是整数)。