2. 运算符和表达式

2. 运算符和表达式

​ 在Java中,使用算术运算符+、-、*、/表示加、减、乘、除运算。

​ 当参与/运算时,两个操作数都是整数时,表示整除法;否则表示浮点除法。

​ 整数的求余操作(取模)用%表示。例如:15/2=7,15%2=1,15.0/2=7.5。

​ 值得注意,整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN的结果

算数运算符 说明
* 乘×
/ 除÷
% 取余数

2.1 数学函数与常量

​ 在Math类中,包含了各种各样的数学函数,在编写不同类别的程序时,可能需要的函数也不同。

想计算一个数值的平方根,可以使用sqrt方法:

double x = 4;
double y = Math.sqrt(x);
System.out.println(y);

输出为:2.0

​ 在Java中,没有幂运算,因此需要借助于Math类的pow方法:

double y = Math.pow(x, a);

​ 将y的值设为x的a次幂( x a x^a xa)。

​ pow方法有两个double类型的参数,其返回结果也为double类型。

  • Math类还提供了常用的三角函数:

    • Math.sin;

    • Math.cos;

    • Math.tan;

    • Math.atan;

    • Math.atan2;

  • 指数函数以及它的反函数,自然对数以及10为底的对数:

    • Math.exp;
    • Math.log;
    • Math.log10;
  • 两个用于表示 π 和 e \pi和e πe常量的近似值:

    • Math.PI
    • Math.E

​ 如果不想再数学方法名和常量名前添加前缀"Math",只需要在源文件的顶部添加代码:

import static java.lang.Math.*;

2.2 结合赋值和运算符

​ 可以在赋值中使用二元运算符,这是一种便捷的简写形式:

x += 4;
//等价于
x = x + 4;

(一般地,将运算符放在=号的左边,如*=或%=)

2.3 自增与自减运算符

​ 自增、自减运算符:n++将变量n的当前值加1,n–将n的值减1。

int n = 12;
n++; //自增后,n=13

​ 这些运算符只会改变变量的值,它们的操作数不能是数值。例如:4++是个非法语句。

​ 自增与自减运算符还有一种“前缀”形式:++n,–n;后缀和前缀形式都会使变量值加1或减1。在表达式中,前缀形式会先完成加1,而后缀形式会先使用变量原来的值

int m = 7;
int n = 7;
int a = 2 * ++m; // a=16,m=8
int b = 2 * n--; // b=14,n=8

2.4 关系和boolean运算符

  • 要检测相等性可以使用两个等号==:
3 == 7 //返回false
  • 检测不相等就使用!=:
3 != 7 //返回true
  • 经常使用的运算符还有:<小于,>大于,<=小于等于,>=大于等于;

  • 感叹号!就是逻辑运算符,运算符&&表示逻辑**“与“运算符,运算符||表示逻辑”或“**运算符;

expression1 && expression2 

​ expression1和expression2计算返回的结果都为true时,整个表达式才会返回true;

​ 若expression1和expression2计算返回的结果其中一个为false时,整个表达式返回的结果为false。

expression1 || expression2

​ 若expression1返回true则不计算expression2,将整个表达式的结果返回true;

​ 若expression1返回false,计算expression2返回true,整个表达式结果也将会返回true;

​ 若expression1和expression2的返回结果都是false,那整个表达式结果也将返回false。

  • 三目运算符x?y:z,当x返回结果为true时就返回y,当x返回结果为false时就返回z。
x < y ? x : y

将会返回x和y中较小的一个。

2.5 位运算符

​ 处理整数类型时,可以直接对组成整型数值的各个位完成操作。位运算符包括:&(“and”)、|(“or”)、^(“xor”)、~(“not”)。另外还有>>和<<运算符将位模型左移或右移。

2.6 括号与运算符级别

运算符优先级:

结合性 运算符
从左往右 ()括号
从右往左 ! ~ ++ – + 一元运算 - 一元运算 ()强制类型转换 new
从左往右 * / %
从左往右 + -
从左往右 << >> >>>
从左往右 < <= > >=
从左往右 == !=
从左往右 &
从左往右 ^
从左往右 |
从左往右 &&
从左往右 ||
从右往左 ?:
从右往左 = += -= *= /= %= &= |= ^= <<= >>= >>>=

​ 若不适用括号,就按照给出的运算符优先级次序进行计算。同一个级别的运算符按照从左到右的次序进行计算(除了表中给出的右结合运算符外)。

参考资料

[1] 《Java核心技术 卷I 基础知识》 ------【美】凯S. 霍斯特曼

你可能感兴趣的:(Java技术专家,算法,开发语言,java)