Java &引用;小于或等于;对;少于;处理

Java &引用;小于或等于;对;少于;处理,java,c,computer-science,Java,C,Computer Science,考虑以下条件: if(a < 10) if(a代码>类型< /代码>的笛卡尔积。让我们只考虑 int 。@ GuuravbHOOK,那么答案是“它取决于”。什么是CPU?也可以考虑源不是执行的。与常量的比较是编译器可以轻松地重写以使用最快的比较。我只需要整数类型的差异。我已经编辑了相应的问题。当你说你将把问题扩大到包括两个问题时,我开始回答。数字类型的组。我将把它留在这里,因为它回答了修改后的问题,但为将来的读者提供了进一步的信息。请注意,这就是为什么您有{Double,Float}.c

考虑以下条件:

if(a < 10)
if(a<10)


if(a对于整数,程序的逻辑流没有区别

但不同的标准解决方案使用了一种传统的符号,由于这种非官方标准的坚持,人们习惯了使用“正确”的符号,因此增加了可读性


性能方面,谈到编译成汇编程序的语言,它们(在大多数体系结构上)都转换成一条直接处理器指令(条件跳转),使它们几乎相同。

对于
int
long
,它们都处理整数,因此没有真正的区别。
这是因为9是低于10的下一个有效值

但是对于
float
double
和其他可以保存小于整数的值的类型,有很大的区别

考虑一下您的两个案例将如何处理这些数字:

float a = 9.0
float b = 10.0
float c = 9.5
编辑:

在第一种情况下,如果(val<10)

只考虑int


没有真正的区别,两者都是相等的,如果你运行性能测试,它将产生随机结果,结果两者都相等。

好吧,即使数字是int(对于float和double,如果a是double类型,差异是巨大的:),那么我将以“太宽”的投票结果先发制人当然,它已经是。当然,你问的是<代码>语言> <代码> x>代码>类型< /代码>的笛卡尔积。让我们只考虑<代码> int <代码>。@ GuuravbHOOK,那么答案是“它取决于”。什么是CPU?也可以考虑源不是执行的。与常量的比较是编译器可以轻松地重写以使用最快的比较。我只需要整数类型的差异。我已经编辑了相应的问题。当你说你将把问题扩大到包括两个问题时,我开始回答。数字类型的组。我将把它留在这里,因为它回答了修改后的问题,但为将来的读者提供了进一步的信息。请注意,这就是为什么您有
{Double,Float}.compare()
说得好,我也要把它加进去。我只需要整数类型的差异。我已经相应地编辑了这个问题。@GauravBhor编辑,感谢您通知我,如果“9”和“10”是常量,它甚至会编译成完全相同的操作码。@MikkelLøkke是吗?实际上有两个不同的汇编程序指令(至少在x86上)对于it@LionC是的,Java字节码指令也有两种不同的类型。然而,现代编译器并不简单地将指令从源代码转换为目标代码。他们通常会根据语法树重新构造代码。虽然这在很大程度上取决于编译器,但很可能任何类型的常量比较儿子最终会一模一样。+1当然,这些“帮助”OP看哪个更像共振峰:)
float a = 9.0
float b = 10.0
float c = 9.5
a < 10  ... true
b < 10  ... false
c < 10  ... true    <--- note this
a <= 9  ... true
b <= 9  ... false
c <= 9  ... false    <--- note this
a.compare(value) < 0  ... true if 'a' is smaller than 'value'
a.compare(value) > 0  ... true if 'a' is bigger than 'value'
a.compare(value) == 0 ... true if 'a' is equal to 'value'
for (int i = 1; i <= 16; i <<= 1)
{
    gz = (~(~gz << i) | pz) & gz; // this is just an example
    go = (go << i) & po | go;
}
for (int i = 0; i <= x; i++)
{
    // anything
}