在做练习题时,我遇到了一个代码: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/