日期:2014-05-20  浏览次数:20583 次

请教一个SCJP的题目.
public   class   BoolArray   {

        boolean   []   b   =   new   boolean[3];
        int   count   =   0;
       
        void   set(boolean   []   x,int   i){
        x[i]   =   true;
        ++count;
        }
        public   static   void   main(String[]   args){
        BoolArray   ba   =   new   BoolArray();
        ba.set(ba.b,0);
        ba.set(ba.b,2);
        ba.test();
        }
        void   test(){
        if   (b[0]&&b[1]|b[2]){
        count++;
        }
        if(b[1]&&b[(++count   -   2)]){
          count   +=   7;                
          }
        System.out.println( "count   =     "+   count);
        }
}
在这个程序中的这句话:
        if(b[1]&&b[(++count   -   2)])
  由于   &&是一个短路语句,即判断了b[1]之后,若b[i]是为FALSE
就不用判断后面的b[(++count   -   2)]
而我感觉[(++count   -   2)]的优先级比&&高,为什么不是先把[(++count   -   2)]算了以后再,算   &&   短路语句。
它是答案是   3   ,运行也是   3   .


------解决方案--------------------
呵呵 LZ 想多了 下面的不会执行了
就没有优先级的问题了

你讲怎么优先


------解决方案--------------------
++count && false 这样写++才是优先。

false && b[(++count - 2)] 这样显然后面不计算。