运算符用于连接值,Java提供了一组丰富的算术运算符和逻辑运算符以及数学函数。
算术运算符
在Java中,使用算术运算符 + - * /
表示加、减、乘、除运算。
特别注意的是,当参与/
运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。
整数的求余操作(取模)用%
表示。
注意:整数被0除会报出一个异常,而浮点数被0除将会得到无穷大或NaN的结果。
自动类型转换
我们经常需要将一种数值类型转换成另一种数值类型。
图中的6个实现箭头表示无信息丢失的转换,另外有三个虚线箭头,表示可能有精度损失的转换。
强制类型转换
在需要的时候,int
类型会自动的转换成double
类型。但有时候也需要将double
类型转换成int
,这种转换可能会丢失一些信息,这就要通过强制类型转换来完成了。
强制类型转换的语法是在圆括号中给出想要转换的目标类型,后面紧跟着带转换的变量名
double pi = 3.14;
int i = (int)pi;
如果试图将一个数值从一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。
赋值运算符
可以在赋值中使用二元运算符,这是一种很方便的简写形式。
自增自减运算符
众所周知,加1、减1是数值变量最常见的操作。在Java中,也提供了自增自减运算符:n ++ 就可以将变量n的当前值加1,n -- 则是将n的值减1
int n = 10;
n ++ ; // n == 11
这种运算有两种形式,前缀和后缀前缀:先执行加减,在执行表达式
后缀:先执行表达式,在执行加减
int x = 5;
System.out.println(x ++ ); // 5, 先输出x,在对x进行加1, x == 6
System.out.println( ++ x); // 7,先对x进行加以1,在对x进行输出
关系和boolean运算符
Java中包含丰富的关系运算符
除此之外,Java中还提供了逻辑运算符
同时,&&
和||
运算符是按照“短路”的方式运算的当第一个操作数已经可以确定表达式的值,第二个操作数就不用在计算了
除此之外,Java支持三元运算符:条件?表达式1:表达式2;
当条件为true时,表达式就是第一个表达式的值,否则为第二个表达式的值
x < y ? x : y; // 返回x和y中较小的一个数
位运算符
处理整数类型时,可以直接对组成整数的各个位完成操作。这意味着可以使用掩码技术得到整数中的个位。
应用在布尔值时,& 和 | 运算符也会得到一个布尔值。不过& 和 | 不采用“短路”的方式来求值,也就是左右两个表达式都要进行运算
运算符优先级
如果不使用括号,就按照给出的运算符优先级依次进行计算,同一级别的运算符按照从左到右的次序进行计算。