ad

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_3.5.7 关系和 boolean 运算符

admin 308 2023-10-25

【摘要】 本书摘自《Java核心技术》一书中第3章,第5节,作者是来自美国的凯·S.霍斯特曼(Cay S.Horstmann),由林琪、苏钰涵等译。

3.5.7 关系和 boolean 运算符

Java包含丰富的关系运算符。要检测相等性,可以使用两个等号==。例如,

3== 7

的值为false。

另外可以使用!=检测不相等。例如,

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_3.5.7 关系和 boolean 运算符

3!=7

的值为 true。

最后,还有经常使用的<(小于)、>(大于)、<=(小于等于)和>=(大于等于)运算符。

Java 沿用了C++ 的做法,使用&表示逻辑“与”运算符,使用 |表示逻辑“或”运算 符。从!=运算符可以想到,感叹号!就是逻辑非运算符。&和 |运算符是按照“短路”方 式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。如 果用&运算符合并两个表达式,

expression166 expression2

而且已经计算得到第一个表达式的真值为 false, 那么结果就不可能为 true。 因此,第二个表 达式就不必计算了。可以利用这一点来避免错误。例如,在下面的表达式中:

x!=θ&1/x>x+y// no division byθ

如果x等于0,那么第二部分就不会计算。因此,如果x 为0,也就不会计算1/x, 除以 0的错误就不会出现。

类似地,如果第一个表达式为 true,expression: ll expressionz的值就自动为true, 而无须 计算第二个表达式。

最后一点,Java支持三元操作符?:,这个操作符有时很有用。如果条件为 true,下面的

表达式

condition? expressiont:expression2

就为第一个表达式的值,否则计算为第二个表达式的值。例如,

x

会返回x 和 y 中较小的一个。

3.5.8 位运算符

处理整型类型时,可以直接对组成整数的各个位完成操作。这意味着可以使用掩码技术 得到整数中的各个位。位运算符包括:

&("and") |("or") ^("xor") ~(“not")

这些运算符按位模式处理。例如,如果n是一个整数变量,而且用二进制表示的n从右 边数第4位为1,则

int fourthBitFromRight =(n &θb1000)/ 0b1000;

会返回1,否则返回θ。利用&并结合使用适当的2的幂,可以把其他位掩掉,而只留下其中 的某一位。

另外,还有>>和<运算符可以将位模式左移或右移。需要建立位模式来完成位掩码时, 这两个运算符会很方便:

int fourthBitFromRight =(n&(1<<3))>>3;

最后,>>>运算符会用0填充高位,这与>不同,它会用符号位填充高位。不存在<<运 算符。

3.5.9 括号与运算符级别

表3-4给出了运算符的优先级。如果不使用圆括号,就按照给出的运算符优先级次序进 行计算。同一个级别的运算符按照从左到右的次序进行计算(但右结合运算符除外,如表中

所示)。例如,由于&的优先级比Ⅱ的优先级高,所以表达式

a 6 b || c

等价于

(a & b) I | c

又因为+=是右结合运算符,所以表达式

a += b += C

等价于

a +=(b += c)

也就是将b+=c 的结果(加上c之后的b) 加到a 上。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:通过《基于Kotlin的Android应用程序开发》_与成功更近一步_2.2 开发项目的创建
下一篇:阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.4.2 静态常量
相关文章
×