Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用x>;=0或x>-1._Java_Integer_Compare - Fatal编程技术网

Java 使用x>;=0或x>-1.

Java 使用x>;=0或x>-1.,java,integer,compare,Java,Integer,Compare,我在任何地方都找不到这个看似简单的问题的答案。使用x>=0或x>-1将整数与0进行比较是否更好 我相信这两种方式都不会有明显的区别,但是更好地理解内部工作原理会很有趣。我是专门谈论Java的,但是如果其他语言不同,了解它会很有趣。当我说更好时,我的意思是在效率方面,很明显,x>=0更容易阅读。在这种情况下,它实际上并不重要。处理整数时,x>=0和x>-1之间的差异是无关的 现在,这并不是说没有区别>=检查“大于或等于”,而仅检查“大于”。现在,如果您在这里处理浮点数和整数,那么您肯定希望使用x>

我在任何地方都找不到这个看似简单的问题的答案。使用x>=0或x>-1将整数与0进行比较是否更好


我相信这两种方式都不会有明显的区别,但是更好地理解内部工作原理会很有趣。我是专门谈论Java的,但是如果其他语言不同,了解它会很有趣。当我说更好时,我的意思是在效率方面,很明显,x>=0更容易阅读。

在这种情况下,它实际上并不重要。处理整数时,
x>=0
x>-1
之间的差异是无关的

现在,这并不是说没有区别<代码>>=检查“大于或等于”,而
仅检查“大于”。现在,如果您在这里处理浮点数和整数,那么您肯定希望使用
x>=0
,因为
x>-1
对于
-1
的任何负x值以及0和正数都将计算为true


现在,我个人建议,在任何情况下,如果您必须在
=
(或
之间进行选择,您都无法找到答案,因为问题无法回答

在字节码指令中,我见过类似于
if(I>50)I=50的代码编译成这样:

Address         Hex             Opcode              Operand
....
0000002D        3B              istore_0
0000002E        10 32           bipush              50
00000030        A4 00 06        if_icmple           pos.00000036
00000033        10 32           bipush              50
00000035        3B              istore_0
00000036        ....
如果_icmple
:如果值1小于或等于值2,则在branchoffset处分支到指令


显然,编译器将
if(i>50)i=50转换为类似:
if的内容(我很确定,对于现代CPU来说,
=
>
都有CPU指令。因此,您的决定应该提高可读性而不是性能。也许一些评测是正确的,但我应该想象,根据图灵85的观察,x>=0在任何情况下都比零更有效语言由于基础测试基于<0、=0和>0。@Turing85,硬件级别的真正问题不是“>=”对“>”。真正的问题是“0”对“-1”。计算机有有效的方法来测试一个数字是否大于0、>=0、==0,…,但通常需要更多的步骤来将一个数字与任何其他值进行比较。“更多的步骤”通常意味着s、 从指令流中加载另一个数字,从要测试的数字中减去另一个数字,然后将结果与0进行比较。另一方面,智能优化编译器将知道“x>-1”与“x>=0”的含义相同,并且在任何情况下都将发出相同的代码。