java 逻辑运算

a&b和a&&b的区别... a&b 和 a&&b的区别 展开
 我来答
趣事情
推荐于2017-09-18 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
在Java中,逻辑运算有And、Or、Not三种,其中And、Or又分为普通逻辑运算和短路逻辑运算两种。其中普通逻辑运算And用“&”表示,“|”表示或者关系。短路逻辑运算的时候,“&&”表示短路与,“||”表示短路或。

1、一般逻辑运算需要在逻辑运算符两侧的逻辑表达式,都参与逻辑运算,其表达式的值进行比较,依次计算出最后的值。

2、短路逻辑运算符需要首先计算最左边的表达式,如果最左边的表达式成立,则不再进行整个表达式的判断,直接取最左边的表达式为整个表达式的值。

下面的例子虽然输出的值一样,但是运算的方式不一样:

private void testAnd(boolean on ,boolean
tw){

System.out.println("true&&false = "+
(true&&false));

System.out.println("false&&false = "+
(false&&false));

System.out.println("false&&true = "+
(false&&true));

System.out.println("true&&true = "+
(true&&true));

System.out.println(" ");

System.out.println("true&false = "+ (true&false));

System.out.println("false&false = "+
(false&false));

System.out.println("false&true = "+ (false&true));

System.out.println("true&true = "+ (true&true));

System.out.println(" ");

System.out.println("true||false = "+ (true||false));

System.out.println("false||false = "+
(false||false));

System.out.println("false||true = "+ (false||true));

System.out.println("true||true = "+
(true||true));

System.out.println(" ");

System.out.println("true|false = "+ (true|false));

System.out.println("false|false = "+
(false|false));

System.out.println("false|true = "+ (false|true));

System.out.println("true|true = "+
(true|true));

}

输出结果为:

短路或“&&”只有在左边的表达式值为true时,才会考虑右边表达式的值,否则直接取左边的值为整个表达式的值;
true&&false = false
false&&false = false
false&&true = false
true&&true =
true

//全部计算表达式两面的值,然后取值运算;
true&false = false
false&false = false
false&true = false
true&true =
true

短路或“||”只有在左边的表达式值为false时,才会考虑右边表达式的值,否则直接取左边的值为整个表达式的值;
true||false =
true
false||false = false
false||true = true
true||true = true

普通或"|"全部计算表达式两面的值,然后得出结果
true|false = true
false|false = false
false|true = true
true|true = true

适用短路运算的条件
1)、表达式前后的逻辑条件有明显的顺序关联关系,顺序条件早的在表达式的左边;
2)、逻辑运算符比较少,不会有嵌套或者短路与非短路逻辑混合的情况;
3)、使用短路运算,必须清楚的明白所要判断的逻辑值的具体细节;
4)、如果"&&"和"||"混用,则不考虑使用短路运算;
百度网友32b957015
2008-02-17 · TA获得超过762个赞
知道小有建树答主
回答量:1193
采纳率:0%
帮助的人:1228万
展开全部
a&b是位于,就是把它们拆成一个个bit然后逐个位做与运算
a&&b是整个放在一起做于
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友69bc2c9
推荐于2017-09-04 · TA获得超过106个赞
知道答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
& 是java的位运算符,众所周知,计算机的基本计算方式是二进制,而位运算符完成的就是二进制的运算,也就是0和1的运算,&是位运算符的一种,表示与(and),同样的还有~(Not),表示取反;符号^(or),表示或,就&符号来说,运算结果如下:

0 & 0 = 0,0 &1 = 0,1 & 0 = 0,1 & 1 = 1

比如42的二进制是00101010,15的二进制00001111
那么(42&15)就是00001010 10

而&&是逻辑运算符,它计算的是两个boolean值,也就是说,他的左边和右边都是boolean值,而不是像&可以是整数或字符。

true && false =false,只有都是true才是true

下面是一个将整数转成二进制的例子,可以帮助你更好地理解位运算符的意义:

public class Zhidao2 {
public static void changeToBit(int input) {
System.out.print("The bit of "+input+":");
for(int i=7;i>=0;i--) {
if(((1<<i)&input)!=0)
System.out.print(1);
else
System.out.print(0);
}
System.out.println();
}

public static void main(String[] args) {
Zhidao2.changeToBit(15);
Zhidao2.changeToBit(42);
}
};

将1左移之后与其他二进制数字对比,并取得&运算符的值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式