static boolean won[] = new boolean[1 << 9];
    static final int DONE = (1 << 9) - 1;
won[]、DONE的初值该怎样理解?

解决方案 »

  1.   

    int tmp = 1<<9 = 1000000000(2)=2^9
    然后new一个数组boolean won[] = new boolean[tmp]后面那个就是一个int而已
      

  2.   

    static boolean won[] = new boolean[1 << 9]; 先计算出要分配的长度1 << 9,然后再分配。1 << 9是指把1的二进制码实现左移9位,左移一位,相当于乘上2, 即为1 × 2的9次方,结果为512, 因为2的10次方为1024.static final int DONE = (1 << 9) - 1;跟上面差不多,先把1左移9位,结果减1,然后赋值给DONE.
      

  3.   

    “<<”是移位操作符
    用来操作2进制数的,
    1<<9就是将1的二进制数左移9位
    本来1的二进制表示为0000000001
    左移9位变为1000000000
    就是1楼说的2的9次方第二个同理