本帖最后由 何堂红 于 2014-5-28 17:21 编辑
今天老师给我们演示案例的时候,特别提醒了集合扩容1.5倍的算法时,需使用“arr.length+(arr.length
>>1)”,而不是“arr.length+arr.length>>1”,否则集合不能扩容。我就很好奇,除法运算的优先级不是高于+,-吗,回来试验一下,果然不行。
现在我对于这个结果不太理解,代码如下,请指点!谢谢!
- package Practice.classroom_01;
- public class Demo02 {
- /*
- * 需求:验证10+10>>1与10+(10>>1)的结果
- * 原因:今天老师上课时,演示案例的时候特别提醒了集合扩容1.5倍的算法时,需使用“arr.length+(arr.length
- * >>1)”,而不是“arr.length+arr.length>>1”,否则集合不能扩容。
- */
- public static void main(String[] args) {
- // 算术运算,用于对比
- int i1 = 10 + 10 / 2;
- int i2 = (10 + 10) / 2;
- int i3 = 10 + (10 / 2);
- // 位移运算
- int i4 = 10 + 10 >> 1;
- int i5 = (10 + 10) >> 1;
- int i6 = 10 + (10 >> 1);
- System.out.println("i1=" + i1); // 结果:i1=15
- System.out.println("i2=" + i2); // 结果:i2=10
- System.out.println("i3=" + i3); // 结果:i3=15
- System.out.println("i4=" + i4); // 结果:i4=10
- System.out.println("i5=" + i5); // 结果:i5=10
- System.out.println("i6=" + i6); // 结果:i6=15
- }
- }
复制代码 |