以前在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

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

posted on 2014-01-16 17:18  littlezan  阅读(192)  评论(0编辑  收藏  举报