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,即可知() 单个"|",左边无论真假,右边都进行计算。