黑马程序员技术交流社区

标题: &与&&的区别 [打印本页]

作者: 程序猿小哲    时间: 2015-9-19 15:52
标题: &与&&的区别
之前书上看到这个问题,没太在意,今天在朋友公司的java基础面试题上面又一次见到,我感觉貌似是个考点,特拿出来与马友分享一二,如不完全,请补充,谢谢!首先&拥有着两层含义,在这里最好都进行解释,&可能是位运算符,也可能是逻辑运算符;而&&是逻辑运算符。
&:位运算符,按位与;
&:逻辑运算符,无论左边结果如何,右边都会参与运算;
&&:逻辑运算符,若左边结果为false,右边不参与运算,直接为false,短路与
补充一下,|与||的区别和上述相似
||:若左边为true,则右边不参与运算,直接为true,短路或

PS:个人觉得这个考点主要还是区分两个都是逻辑运算符的情况下,使用区别。不过多年考试经验来看,多写无害。。。

作者: 横溢天使    时间: 2015-9-19 16:08
楼主不妨举个例子,我想会更加的具体
作者: 程序猿小哲    时间: 2015-9-19 17:08
横溢天使 发表于 2015-9-19 16:08
楼主不妨举个例子,我想会更加的具体

嗯,好,举个例子
位运算:3&5
    0011
& 0101
=  0001
所以,3&5=1;
逻辑运算:
if(x!=3 & ++y>0),这时,y会自增;
if(x!=3 && ++y>0),这时,y不会增长

作者: 横溢天使    时间: 2015-9-19 17:18
谢谢楼主
作者: 程序猿小哲    时间: 2015-9-19 17:37
横溢天使 发表于 2015-9-19 17:18
谢谢楼主

呵呵,一起学习!!!
作者: ln0491    时间: 2015-9-19 18:46
学习学习。。。。。。。。。。。
作者: marcojam    时间: 2015-9-19 21:45
几年前考二级c的时候就考过这道题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2