3.3布尔运算符和表达式
考点:3
布尔运算符和表达式
1.布尔逻辑运算符
布尔运算表达式由关系表达式和布尔运算符组成,实现对关系表达式的值进行布尔逻辑运算,运算结果也是布尔型。表3-3给出了Java布尔逻辑运算符。
表3-3 Java布尔逻辑运算符
2.关系运算符和布尔逻辑运算符的优先级关系
!优先级最高,其次是>、>=、<、<=,再次是==和!=,然后是&&,优先级最低的是| |。编写的时候,使用括号可以改变优先级次序。
3.“短路”运算方式
对于&&和| |运算符,Java语言采用短路方式运算,基本原则如下。
(1)运算符&&左边的表达式值若为false,则不用计算右边的表达式的值,整个表达式值为false。
(2)运算符| |左边的表达式值若为true,则不用计算右边的表达式的值,整个表达式值为true。
3.4位运算符和表达式
考点:4
位运算符和表达式
1.位运算符
位运算表达式由操作数和位运算符组成,实现对整数型的二进制数进行位运算。位运算符可以分为逻辑运算符(包括~、&、|和^)及移位运算符(包括>>、<<和>>>)。表3-4给出了Java位运算符。
表3-4 Java位运算符
在进行位运算时,需要注意以下几点。
(1)>>>和>>的区别是:在执行运算时,>>>运算符的操作数高位补0,而>>运算符的操作数高位移入原来高位的值。
(2)右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。
(3)若进行位逻辑运算的两个操作数的数据长度不相同,则返回值应该是数据长度较长的数据类型。
(4)按位异或可以不使用临时变量完成两个值的交换,也可以使某个整型数的特定位的值翻转。
(5)按位与运算可以用来屏蔽特定的位,也可以用来取某个数型数中某些特定的位。
(6)按位或运算可以用来对某个整型数的特定位的值置l。
2.补码的概念
在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。
(l)正数的最高位为0,其余各位代表数值本身(二进制数)。
(2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。
3.位运算符的优先级
~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
3.5赋值运算符和表达式
考点:5
赋值运算符和表达式
赋值运算符由变量和表达式组成,一般格式是:
<变量><赋值运算符><表达式>
赋值运算符包括赋值运算符(=0)和扩展赋值运算符。表3-5给出了Java赋值运算符。
表3-5 Java赋值运算符
注意:如果在赋值运算符两侧的类型不一致时,若右侧变量类型的级别高,则需要进行强制类型转换。
3.6条件运算符和表达式
考点6:
条件运算符和表达式
条件表达式由3个操作数和“?”、“:”组成,一般形式是:
opl?opt:op3
其中op1是关系或者布尔逻辑表达式,该值若为真,则计算op2表达式的值,并作为整个表达式的结果;若为假,则计算op3表达式的值,并作为整个表达式的结果。
3.7运算符优先级
考点:7
运算符优先级
Java语言从左向右计算表达式的值。当一个表达式中有多个运算符的时候,运算的次序由表3-6所示的优先级顺序决定。
表3-6 Java运算符优先级别表
在表3-6中,优先级次序越小,优先级越高,在表达式中,同一级中的运算符按照从左到右的顺序执行。
注意:在表3-6中出现了一些在前面内容中没有介绍的运算符:下标运算符[ ],实例运算符instanceof,内存分配运算符new,强制类型转换符(类型)等,都属于Java运算符的集合。
3.8复杂表达式和表达式语句
考点:8
复杂表达式和表达式语句
复杂表达式是含有两个或者两个以上运算符的表达式。
注意:表达式可以只由一个常量或者一个变量构成,此时表达式的值就是该常量或者变量的值。
表达式语句是指由表达式直接构成的语句,通常包括3种。
(1)一元算数表达式(由+ +或者- -运算符构成)。
(2)在赋值表达式后面加上分号。
(3)无返回值的方法调用语句。