Java中&与&&的区别

以前在C的学习中,曾认为&和&&的区别在于:前者是位运算符,后者是逻辑运算符。

在Java中,这个问题不能这么简单的来看。

&和&&都是可以作为逻辑运算符的,其逻辑运算规则是相同的。

a:true b:true a&b:true a&&b:true

a:true b:false a&b:false a&&b:false

a:false b:true a&b:false a&&b:false

a:false b:false a&b:false a&&b:false

但&作为逻辑运算符时,即使第一个操作符是false,那么它仍然会计算第二个操作符。&&短路与,如果第一个操作符为false,那么它不会再去计算第二个操作符。

eg.

System.out.println(false & (1/0 == 0)); 抛出异常
System.out.println(false && (1/0 == 0)); 打印出false

|与||的区别是一样的。

原文地址:https://www.cnblogs.com/littlezan/p/3522866.html