在做练习题时,我遇到了一个代码:

private char[] a;
int newcap = ((a.length * 3) >> 1) + 1;

其中newcap是阵列的新容量,
使用((a.length*3)+1)也足够了,但是相反,他们使用了按位运算符。
我知道按位运算符的使用。
该代码来自http://www.java2s.com/Tutorials/Java/Collection/ArrayList/Create_a_Char_Array_List_in_Java.htm

最佳答案

不会是一样的,向右移1位等同于除以2。

例如,10 >> 1 = 5

在您的示例中,将长度乘以3,然后除以2,最后将1加到结果中,这样"Using ((a.length*3)+1)"就不会“足够”。

但是,请注意((a.length*3) / 2 +1)将执行相同的操作。

请注意,您也可以使用按位运算符乘以2,但是用左移而不是右移。

System.out.println(10 << 1);//print 20

关于java - 按位运算符使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29579956/

10-11 23:10
查看更多