Java 除此之外,是否有其他方法检查某个值是否在某个范围内?

Java 除此之外,是否有其他方法检查某个值是否在某个范围内?,java,logical-operators,Java,Logical Operators,例如,我想检查一个值是否大于或等于x,但小于或等于y 我想我只需要像这样使用逻辑“and”运算符: if(value >= x && value <= y) { do something } if(value>=x&&value另一种方法是使用Java.lang.Math库 Math.max(Math.min(value, max), min) == value 你可以吃番石榴: ints(特别是考虑到自动装箱)确实没有什么意义,但它可以用于其他类似的值。还

例如,我想检查一个值是否大于或等于x,但小于或等于y

我想我只需要像这样使用逻辑“and”运算符:

if(value >= x && value <= y) {
   do something
}

if(value>=x&&value另一种方法是使用
Java.lang.Math

Math.max(Math.min(value, max), min) == value
你可以吃番石榴:


int
s(特别是考虑到自动装箱)确实没有什么意义,但它可以用于其他类似的
值。

还有其他方法,正如其他答案所示,但您的方法是完全规范的

它是:

  • 清楚的
  • 不需要外部引用或熟悉外部API
  • 尽可能地高效-而且它显然是高效的,在这个意义上,我不必去猜测内联和其他热点魔术,也没有任何条件使我的
  • 没有对打开/关闭范围的混淆:我可以看到它是一个包含所有内容的范围,如果您想更改它,它只是一个字符的更改(想象一下使用Math.min/max版本解决这个问题!)

它很漂亮。不要改变它。

考虑为这些东西创建自己的静态实用程序类

public final class IntUtil
{
    // ...

    public static boolean isBetween(int value, int min,int max)
    {
        return value >= min && value <= max;
    }

    // ...
}
公共最终类IntUtil
{
// ...
公共静态布尔值isBetween(int值、int最小值、int最大值)
{

返回值>=min&&value可能与我关于“无条件”的注释重复-我说的是导致分支预测失败-这是值得怀疑的:RHS的&&lazy评估确实涉及到分支。但我想在这个简单的情况下,不管怎样做RHS都比冒预测失败的风险更有效。我想知道Hotspot是否做出了这样的决定?我感觉一个实验正在诞生!我想ne?当
是一个比
int
更复杂的表达式时,这很好,否则您需要将表达式存储在一个临时变量中。当
范围
设置在其他地方,并且您确实希望将
x
y
值具体表示为一个范围间隔时,这也很好。
public final class IntUtil
{
    // ...

    public static boolean isBetween(int value, int min,int max)
    {
        return value >= min && value <= max;
    }

    // ...
}