java 表达式,由变量,literal和运算符号组合而成.java 总共提供大约30种操作符.下面一一介绍.
1、算术运算
算术运算符有+,-,*,/,% 五种。对于整数来说,算术运算符得到的结果只会是int,为什么呢?因为怕运算完后的结果会超出原来数据类型的范围.
2、比较运算
比较运算符有大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==)和不等于(!=).比较运算的结果一定只有两种,true或false,也就是boolean类型的literal.
不是只有数据才能比较大小,字符也可以,另外等于和不等于也可以用在非基本数据类型之间,如类,对象,字符串,数组等.String的比较不能直接用==.因为它是一个类,不是一种数据类型.
3、逻辑运算
逻辑运算符有与“&&”,或“||”,非“!”,其中“”和“”是短路逻辑操作符。逻辑运算还有“&”“|”“^”等三个按操作符。
4、递加、递减运算
递加“++”,递减“--”,这个与C的语法一样,在使用递加、递减时要特别注意它是放在变量的前面还是后面。如果是如“++a”,java会先将a的值加加,再把新的数值拿去做别的运算。而如果是“a++”的话相反,先把a的值拿去做运算后再将a的值++写入内存。“--”的做法也是一样。
5、赋值运算
“=”是赋值操作符。通常把“=”称为赋值,而不称作等于。赋值操作符的优先级是所有操作符中最低的.还要注意赋值运算的自动类型转换是放大类型转换,不是缩小类型转换,否则编译时要报错.
6、位运算
其中三种“&”“|”“^”其实已经在逻辑运算中提到,另外还有就是互补“~”,“~”有点像逻辑非“!”,只不过“!”用在boolean类型,而“~”用在int类型,也就是按位取反。
7、位移运算
右移“>>”和左移“<<”。另外还有无符号的右移“>>>”,跟右移运算类似,不过不管正负数,全在左边缺少的地方补0,注意它只能用在int,long。
综上,表达式有双重功能,执行表达式的运算和返回值。下表说明了Java操作符的优先级:
后缀操作符 [] . (params) expr++ expr--
一元操作符 ++expr --expr +expr -expr ~ !
新建 new (type)expr
乘除 * / %
加减 + -
移位 << >> >>>
关系 < > <= >= instanceof
等 == !=
位与 &
位异或 ^
位同或 |
逻辑与 &&
逻辑或 ||
条件 ? :
赋值 = += -= *= /= %= &= ^= |= <<= >>= >>>=