一、&& 和 & 基本规则
1、短路与&& 条件1&&条件2 两个条件都为true,如果为true,其他情况为false
2、逻辑与& 条件1&条件2 两个条件都为true,如果为true,其他情况为false
二、&& 与 & 的使用区别
1、&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高。
2、& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。
3、开发中,我们使用的是短路与&&,效率高
三、|| 和 | 的使用区别
1、|| 短路或 :如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
2、| 逻辑或 :不管第一个条件是否为true,第二个条件都要判断,效率低
四、! 取反
五、^ 异或
六、面试易错题
1、
int x = 5;
int y = 5;
if (x++==6 & ++y==6)// x先赋值后自增-->false;y先自增后赋值-->true
{
x = 11;
}
System.out.println("x=" + x +",y=" + y);//输出6,6
2、
int x = 5;
int y = 5;
if (x++==6 && ++y==6) //短路与
{
x = 11;
}
System.out.println("x=" + x +",y=" + y);//输出6 , 5
3、
int x = 5;
int y = 5;
if (++y==6 | x++==6){
x = 11;
}
System.out.println("x=" + x +",y=" + y);//输出 11, 7
4、
int x = 5;
int y = 5;
if (++y==6 || x++==6)//短路或
{
x = 11;
}
System.out.println("x=" + x +",y=" + y);//输出 11,6
5、特别注意##
boolean x = true;
boolean y = false;
short z = 46;
if((z++==46)&&(y=true)) z++;//注意这里的y=true而不是y==true,
// 前者是赋值,后者是判断
if((x = false) ||(++z==49)) z++;
System.out.println("z=" + z);