&&和&,判断两边符号,同真才为真。从结果上来看&&和&相同,在运算过程来看就有一些区别。
运算时,&两边的式子都要判断,如果&左边的式子为假,也要判断&右边的式子;而&&在运算时,&&左边的式子为假,就不用判断右边的式子了。总的来看,&&的运行效率要较高一些。
测试代码:
public static void main(String[] args) {
int x=1;
int y=2;
System.out.println(x>y&&y++>x);
System.out.println(y);
System.out.println(x>y&y++>x);
System.out.println(y);
System.out.println(x<y&&y++<x);
System.out.println(y);
}
运行结果:
false
2
false
3
false
4
System.out.println(x>y&&y++>x) &&左边为假,就不用执行右边的式子,所以y++就没有执行。
System.out.println(x>y&y++>x) &左边的假,但是也执行了右边的式子
这里面y++是先执行运算,之后y在自加1