Java开课第三天:
1. 运算符
2. 表达式
运算符
表达式的分类:
i. 按运算符的功能,将运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符等
ii. 按参与运算的操作数的个数,将运算符分为:单目运算符、双目运算符、三目运算符
算术运算符:
类型 | 运算符 | 功能 |
双目运算符 | + | 加 |
- | 减 | |
* | 乘 | |
/ | 除 | |
% | 取余 | |
单目运算符 | + | 正值 |
- | 负值 | |
++ | 自增 | |
-- | 自减 |
关系运算符:
运算符 | 含义 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 恒等于 |
!= | 不等 |
逻辑运算符:
a | b | !a(非) | a&b(与) | a|b(或) | a^b(异或) | a&&b(短路与) | a||b(短路或) |
True | True | false | True | True | false | True | True |
True | false | false | false | True | True | false | True |
false | True | True | false | True | True | false | True |
false | false | True | false | false | false | false | false |
位运算符:
位运算符用来对整型(byte、short、int、long)或字符型(char)数据二进制位进行操作,结果为一个整数。
µ ~(按位取反)
格式: ~a
功能:将操作数a中的二进制位由1变0,由0变1。
µ &(按位相与)
格式:a & b
功能:两个操作数的相应位都为1,则该位为1,否则为0。
µ |(按位相或)
格式:a | b
功能:两个操作数的相应位中有一个为1,则该位的结果为1。
µ ^(按位相异或)
格式:a ^ b
功能:两个操作数的相应位相异,则该位的结果为1,否则为0。
µ >>(按位右移)
格式:a >>b
功能:将a右移b位,右端的低位被舍弃,左端高位补原来的符号位。
µ <<(按位左移)
格式:a <<b
功能:将a左移b位,右端的低位补0,左端的高位被舍弃。
µ >>>(无符号右移)
格式:a>>> b
功能:将a右移b位,右端的低位被舍弃,左端的高位补0。
赋值运算符:
µ 格式:变量=表达式
double d = 7.8f; //合法
int a = 78L; //非法
int a = (int)78L; //合法
µ 复合的赋值运算符
+= -= *= /= %= &= |= ^= >>= <<= >>>=
条件运算符:
µ 格式:表达式1 ? 表达式2 :表达式3
需注意: 表达式1应是boolean类型的表达式;表达式2和表达式3的类型要一致。
表达式
表达式是由若干操作数和运算符按照约定规则构成的一个序列。
µ 运算符标明对操作数进行何种操作;
µ 操作数可以是变量、常量或有返回值的方法调用等其他的表达式。
µ 表达式中的数据类型转换
自动类型转换
longlongVar = 12345;
doubledoubleVar = 1.2f;
float f =23456434563L;
doubleVar= doubleVar * (12 + longVar);
强制类型转换
格式:(目标数据类型)变量或表达式
例如,(float)5 / 9 * (f - 32)
注意:强制类型转换时,由于目标数据类型的取值范围小于待转换数据类型的取值范围,在转换过程中会出现截断,导致高位数据丢失或精度下降