黑马程序员技术交流社区

标题: 逻辑运算符与位运算符某些符号的区别 [打印本页]

作者: selectgoodboy    时间: 2013-4-17 17:18
标题: 逻辑运算符与位运算符某些符号的区别
本帖最后由 selectgoodboy 于 2013-4-18 16:46 编辑

逻辑运算符中的&&、||、!和位运算符中的&、|、~各自都是如何区分的?希望大侠们能够给出一个理论与实践相结合的解释。谢谢!
作者: 爪哇攻城狮    时间: 2013-4-17 18:50

System.out.println(3/2)  按整型计算 得1

1) >>=  前面是零补零,前面是一补一;

2) >>>=  无符号右移(强制右移都会移进一),

>>=和>>>=,这两个Java运算符对于负数不一样

正数:右移n位等于除以2的n次方

负数:变成正数。

3) &&   短路与,前面为假,表达式为假,后面的操作不会进行,& 会对所有条件进行判断。

4) ||   短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断。

例:

if(a< 3&(b=a)==0)   b赋值

if(a< 3&&(b=a)==0)  b不赋值

5)instanceof,是用于判断一个对象是否属于某个类型

6)java中的求余运算符“%”可以对两个实型变量求余
作者: PANZERLEADER    时间: 2013-4-17 22:20
逻辑运算符和位运算符中都有相似的与、或、非运算符,差别就在于:

逻辑运算符运算完成后,式子的结果是boolean的值,是true或false

位运算符运算完成的结果,不是boolean的值,而是整型。

比如:
  1.      int a =3, b=3;
  2. //            结果是3(因为3跟3的二进制每位都相同,所以与的结果也是一样的)
  3.                System.out.println(a&b);
  4. //               结果是3(因为3跟3的二进制每位都相同,所以或的结果也是一样的)
  5.                System.out.println(a|b);
  6. //               结果是-4,因为负数的二进制是正数逐位取反再加1得来的,所以如果正数取反,就等于其负数-1,即-3-1=-4
  7.                System.out.println(~b);
复制代码
逻辑运算符只能用于boolean的值,比如:
  1.   boolean a =true, b = false;
  2.                 // 结果是false,因为b是false,所以a&b是false
  3.                 System.out.println(a&b);
  4.                 // 结果是true,因为a是true,所以a|b是true
  5.                 System.out.println(a|b);
  6.                 // 结果是false,因为啊是true,a的非是false
  7.                 System.out.println(!a);
复制代码

作者: selectgoodboy    时间: 2013-4-18 16:42
PANZERLEADER 发表于 2013-4-17 22:20
逻辑运算符和位运算符中都有相似的与、或、非运算符,差别就在于:

逻辑运算符运算完成后,式子的结果是bo ...

谢谢!:)
作者: selectgoodboy    时间: 2013-4-18 16:45
李松柏 发表于 2013-4-17 18:50
System.out.println(3/2)  按整型计算 得1

1) >>=  前面是零补零,前面是一补一;

:handshake谢谢!




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