Java中的两对容易迷糊的细节问题:
1.&与&&
public static void main(String[] args) {
int i=0;
int a = 3;
int b = 4;
if(a>b&a>(++i)){
}
System.out.println(i);
}
输出打印:i=1
易见:执行了++i,即可知:
单个"&",左边无论真假,右边都进行计算
public static void main(String[] args) {
int i=0;
int a = 3;
int b = 4;
int c = 3;
if(a>b&&a>(++i)){
}
System.out.println("i="+i);
}
输出打印:
i=0
易见:并未执行++i,即可知:
双个"&&",左边为假,右边不进行计算(右边为真,左边当然计算啦)
2.|与||
public static void main(String[] args) {
int i=0;
int a = 3;
int b = 4;
int c = 3;
if(a<b||a>(++i)){
}
System.out.println("i="+i);
}
打印输出:i=0
易见:执行了++i,即可知:
双个"||",左边为真,右边不进行计算(左边为假,右面当然要计算啦)
public static void main(String[] args) {
int i=0;
int a = 3;
int b = 4;
int c = 3;
if(a>b|a>(++i)){
}
System.out.println("i="+i);
}
打印输出:i=1
易见:执行了++i,即可知()单个"|",左边无论真假,右边都进行计算。