请教一个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)] 这样显然后面不计算。