Fork me on GitHub

Java中的逻辑与&,短路与&&,逻辑或|,短路或||

区别:

  • 逻辑与& :&左右两边都判断再得出结果;可以计算boolean类型的与,也可以计算int类型数字的按位与。
  • 短路与&& :如果&&的左边为false,则右边不看直接得出结果;只能计算boolean类型的与。
  • 逻辑或| :|左右两边都判断再得出结果;可以计算boolean类型的或,也可以计算int类型数字的按位或。
  • 短路或|| :如果||的左边为true,则右边不看直接得出结果;只能计算boolean类型的或。

例题:

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

1
2
3
4
5
public static int Sum_Solution(int n) {
int res = n;
boolean b = res!=0 && (res+=Sum_Solution(n-1))>0;
return res;
}

当递归到n = 0时,&&左边为false不看右边直接得出b = false,这条语句完成,接下来return 0,相当于递归出口,这时程序开始往上返。

您的支持将鼓励我继续创作!