问题 JAVA中大于3次>>>的确做什么?


我知道 >> (两倍大)正在转移,但是做什么 >>> 做到了吗?

    System.out.println(16>>>2);  // OK

    System.out.println(8>>>2);   // OK 

    System.out.println(8>>>2);  // OK 

    System.out.println(8<<<2);  // not OK

10797
2017-12-27 18:03


起源

你可以读到这个: docs.oracle.com/javase/tutorial/java/nutsandbolts/... - Alexis C.
@ZouZou:很好! - ron


答案:


>>> 右移零填充运算符。
 左操作数值向右移动右操作数指定的位数,移位值用零填充。


13
2017-12-27 18:04



我知道这是一个愚蠢的问题,但你有一个简单的例子说明你应用它的地方吗? - cpu_meltdown
您可以使用它来生成hashCodes。例如,在org.opencv.core的Point类中,他们在生成hashcode时使用这行代码:result = prime * result +(int)(temp ^(temp >>> 32)); - David
关于它在JDK中真正应用的一个很好的例子: research.googleblog.com/2006/06/... - Vivek Sethi


>>>  是有效的运算符 <<< 在java中无效的运算符如果尝试使用它给它

令牌“<”上的语法错误,删除此令牌

>>> :右移零填充运算符。左操作数值向右移动右操作数指定的位数,移位值用零填充。

更多信息:

为什么1 >> 32 == 1?


3
2017-12-27 18:13