运算符
运算符用于连接值,java提供了一组丰富的算术和逻辑运算以及数学函数。
算术运算符
算术运算符有:+ – * / %。
整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
整型溢出不会产生错误。
public class IntSty {
public static void main (String [] args) {
int n = 2147483647;
int m = 1;
int k = n + m;
System.out.println(k); // -2147483648
}
}
数学函数与常量
在Math类中年,包含了各种各样的数学函数。如计算幂,平方根,绝对值等。
public class IntSty {
public static void main (String [] args) {
int n = 4;
int m = -3;
System.out.println(Math.sqrt(n) * Math.abs(m));
System.out.println(Math.pow(2,3));
}
}
Math类中有两个常量Math.PI和Math.E。
结构赋值和运算符
可以在赋值中使用二元运算符,例如x +=4 等价于 x = x + 4;
如果运算符得到一个值,其类型与左操作数的类型不同,就会发生强制类型转换为左操作数的类型。
x +=3.5; ==> x = (int) (x + 3.5)
自增自减运算符
和php中一致
关系和boolean运算符
java中有
- <
- >
- <=
- >=
- ==
- ||
- &&
- !
这些运算符的返回值都是bool类型。
java中也有三元运算符 cond ? exp1 : exp2。如 x < y ? x : y将获得x和y中较小的那个数。
位运算符
位运算符有四种:
- &
- |
- ~
- ^
注意 a & b 与 a && b的返回结果一致,但是注意&&具有短路特性。同理a | b、 a || b也是一样。
除此之外,还有>>和<<将位进行右移或左移。java还有一个独特的>>>运算符。它和>>不同的是,>>用符号位填充高位,而>>>只会用0填充高位。
移位运算符的右操作数要完成模32的运算,比如:x >> 35 等同 x >> 3.