&既是位运算符也是逻辑运算符,&&只是逻辑运算符,&与&&同时作为逻辑运算符时&&是短路的,而&并不短路.
即&运算符,即使左边是false,也要执行右边代码.当&&的左边是false,右边就不代码就不执行了.
还有一点需要指出的区别就是
逻辑与(&&)在Java中运算符必须是boolean类型的,而按位与(&)可以是int类型的:
例:
System.out.println( 5&3);//(代码1) 打印结果1
System.out.println ( i++ == 1 && i++ == 2);//打印false |