我发现此代码可在此处找到SO中的重复项。但我不明白这条线是什么意思int mid = (low + high) >>> 1;
private static int findDuplicate(int[] array) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
System.out.println(mid);
int midVal = array[mid];
if (midVal == mid)
low = mid + 1;
else
high = mid - 1;
}
return high;
}
该>>>
运算符是Java中无符号的右移位运算符。它有效地将操作数除以2
右操作数的幂,或者仅2
在此处。
>>
和之间的差异>>>
仅在移动负数时才会显示。如果>>
运算符1
是a
1
,则运算符会将其移位到最高有效位,而无论如何都将>>>
移位0
。
更新:
让我们求平均值1
和2147483647
(Integer.MAX_VALUE
)。我们可以轻松地进行数学运算:
(1 + 2147483647) / 2 = 2147483648 / 2 = 1073741824
现在,通过代码(low + high) / 2
,涉及到以下这些位:
1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000 // Overflow
/2
================================================
-1073741824: 11000000 00000000 00000000 00000000 // Signed divide, same as >> 1.
让我们将“转移”到>>>
:
1: 00000000 00000000 00000000 00000001
+2147483647: 01111111 11111111 11111111 11111111
================================================
-2147483648: 10000000 00000000 00000000 00000000 // Overflow
>>> 1
================================================
+1073741824: 01000000 00000000 00000000 00000000 // Unsigned shift right.
问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如
问题内容: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 由于内在锁由线程持有,这是否意味着线程运行一次等于调用基础? 谢谢,这似乎意味着:在线程中,如果我在调用function的流程函数时获得了锁,并且还需要一个锁,那么将会有一个可重入的过程。在Java中,这种现象是按线程获取的,因此我不需要考虑死锁吗? 问题答案: 重入意味着锁定是在每个线程而不是每个调用的基础上获得的。 这是一个
在这组Java代码中,处的是什么意思?我试着搜索,但我没有找到任何解释。请知道的人给我解释一下。太感谢你了。
我发现这段代码是为了在SO post中找到重复的代码。但我不明白这行是什么意思
问题内容: 作为Java的初学者,我仍然不确定它的含义。有人精通Java 问题答案: 静态表示标记为此类的变量或方法在类级别可用。换句话说,你无需创建类的实例即可访问它。 因此,与其创建一个Foo实例,然后doStuff像这样调用: 你只需直接针对该类调用该方法,如下所示:
可能重复: 什么 我在一些java代码中遇到了一些不熟悉的符号,虽然代码编译和功能正确,但我对尖括号在代码中的确切作用感到困惑。我在com中找到了代码。太阳Java语言帮助搜索位缓冲区,其片段如下: 那些看起来神秘的括号是做什么的?它看起来几乎像c插入/提取,但我知道Java没有这样的东西。 此外,我还尝试在谷歌上搜索,但出于某种原因,谷歌似乎看不到尖括号,即使我把它们放在引号中。