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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 selectgoodboy 于 2013-4-18 16:46 编辑

逻辑运算符中的&&、||、!和位运算符中的&、|、~各自都是如何区分的?希望大侠们能够给出一个理论与实践相结合的解释。谢谢!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览

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中的求余运算符“%”可以对两个实型变量求余

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
逻辑运算符和位运算符中都有相似的与、或、非运算符,差别就在于:

逻辑运算符运算完成后,式子的结果是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);
复制代码

评分

参与人数 1技术分 +2 收起 理由
陈丽莉 + 2

查看全部评分

回复 使用道具 举报
PANZERLEADER 发表于 2013-4-17 22:20
逻辑运算符和位运算符中都有相似的与、或、非运算符,差别就在于:

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

谢谢!:)
回复 使用道具 举报
李松柏 发表于 2013-4-17 18:50
System.out.println(3/2)  按整型计算 得1

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

:handshake谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马