A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 永无止境的、 于 2011-12-5 13:51 编辑

今天从头到尾的复习了一下java知识,在看过去的笔记时,突然间想起来了过去就一直迷惑的问题,逻辑运算符中 &,| 是否存在 &&,|| 绝对无法替代的功能?
大家都知道在逻辑运算符中
正常与或:
&                两边都为true结果才为true,只要有一边是false,结果就是false
|                两边都为false结果才为false,只要有一边是true,结果就是true
短路与或:
&&                和&结果相同,具有短路效果,如果前半是false,表达式结果一定为false,不运行后一半
||                和||结果相同,具有短路效果,如果前半是true,表达式结果一定为true,不运行后一半

并且短路与或可以避免空指针异常的出现,也可以节省资源利用
但是java中的逻辑运算符并没有将正常的与或清除逻辑运算符,想来是有原因的, &,| 应该存在 &&,|| 绝对无法替代的功能
但是已经学习java这么多时间了,仍然没有发现原因,希望各位可以帮助我解除这个疑惑 ?

评分

参与人数 1黑马币 +1 收起 理由
admin + 1 这样不行,你把问题改成已解决,还有谁来帮.

查看全部评分

14 个回复

倒序浏览
(&,|)是位运算符,(&&,||)是逻辑运算符

逻辑运算符只能操作布尔型的,而位运算符不仅可以操作布尔型,而且可以操作数值型的(整数类型包括long,int,short,char,and byte )
下面说下(&,|)操作数值的功能:

按位与运算符“&”,如果两个运算数都是1,则结果为1。其他情况下,结果均为零。
例如:  3&5 
  3 = 00000011
   5 = 00000101
      = 00000001(结果)
结果为:1

例如:  7&5 
7 = 00000111
  5 = 00000101
     = 00000101(结果)
结果为:5


按位或运算符“|”,任何一个运算数为1,则结果为1。

例如: 3|5
   3 = 00000011
   5 = 00000101
      = 00000111(结果)
结果为:7

例如: 3|4
   3 = 00000011
   4 = 00000100
      = 00000111(结果)
结果为:7
     
关于boolean的我就不举例了。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
刘海涛 发表于 2011-12-5 12:40
(&,|)是位运算符,(&&,||)是逻辑运算符

逻辑运算符只能操作布尔型的,而位运算符不仅可以操作布尔型,而且可 ...

非常感谢你的回答,但是我想知道的是在逻辑预算符中 &,| 是否存在 &&,|| 绝对无法替代的功能
回复 使用道具 举报
&可以作为逻辑运算符也可以做位运算符

&&只能做逻辑运算符
回复 使用道具 举报
比如3&4
3的二进制:011
4的二进制:100
3&4=0
回复 使用道具 举报
杨强 发表于 2011-12-5 13:00
比如3&4
3的二进制:011
4的二进制:100

汗!我想问的是在逻辑运算符中 &,| 是否存在 &&,|| 绝对无法替代的功能?
回复 使用道具 举报
杨强 黑马帝 2011-12-5 13:18:46
7#
永无止境的、 发表于 2011-12-5 13:02
汗!我想问的是在逻辑运算符中 &,| 是否存在 &&,|| 绝对无法替代的功能?

这就是啊 % |可以作为 位运算符 && ||不能
回复 使用道具 举报
杨强 黑马帝 2011-12-5 13:19:46
8#
杨强 发表于 2011-12-5 13:18
这就是啊 % |可以作为 位运算符 && ||不能

也就是说 & | 在作为位运算符时,能实现的功能就是&& ||不能替代的
回复 使用道具 举报
颜秉武 黑马帝 2011-12-5 13:29:04
9#
杨强 发表于 2011-12-5 13:19
也就是说 & | 在作为位运算符时,能实现的功能就是&& ||不能替代的

这点我知道,可能是楼上没看懂问题吧!我的意思是逻辑运算符中&,| 是否存在 &&,|| 绝对无法替代的功能,只是在逻辑运算符中,因为我感觉逻辑运算符中&,|的功能 &&,|| 都能代替,但是逻辑运算符中却独立存在着&,|没有有被取消,因而在逻辑运算符中&,|应该存在呗&7,||无法代替的功能,现在讨论的是逻辑运算符当中,与其他运算符无关
回复 使用道具 举报
杨强 黑马帝 2011-12-5 13:32:46
10#
& | 既是位运算符也是逻辑运算符
&& ||只是逻辑运算符
关于逻辑运算 &|的所有功能都能用&& ||来实现 而且节省资源
& |也是位运算符可以进行位运算例如 上面的3&4
这个就是&& ||做不到的

你问的问题是 逻辑运算符中 &,| 是否存在 &&,|| 绝对无法替代的功能?
答案是 没有

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
哦哦,对的,我就是想问这个问题的,只是 &,|  没有在逻辑运算符中清楚,这点让我很迷惑,才有的这个问题
回复 使用道具 举报
杨强 黑马帝 2011-12-5 15:18:23
12#
永无止境的、 发表于 2011-12-5 13:35
哦哦,对的,我就是想问这个问题的,只是 &,|  没有在逻辑运算符中清楚,这点让我很迷惑,才有的这个问题 ...

我想到了
回复 使用道具 举报
杨强 黑马帝 2011-12-5 15:22:44
13#
杨强 发表于 2011-12-5 15:18
我想到了

如果 是这样 x=0 y=2
1. x++==y & ++x >y
           2.      x++==y && ++x >y
1中的x=2
2中的x=1
回复 使用道具 举报
杨强 发表于 2011-12-5 15:22
如果 是这样 x=0 y=2
1. x++==y & ++x >y
           2.      x++==y && ++x >y

是啊,这你都能想到,厉害,果真有,赞一个,这个一定要记下来 呵呵   
回复 使用道具 举报
杨强 黑马帝 2011-12-5 16:16:42
15#
永无止境的、 发表于 2011-12-5 15:31
是啊,这你都能想到,厉害,果真有,赞一个,这个一定要记下来 呵呵

Thanks、、、、、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马