Java知识点——运算符
作者:互联网
数学函数和常量
Math类提供了常用的一些数学函数,如:三角函数、对数、指数等。一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可。在 Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。
Math.sqrt(x); //计算数值x的平方根
Math.pow(x,a); //计算数值x的a次幂
Math.sin(θ); //sin(θ)的值
Math.cos(θ); //cos(θ)的值
Math.tan(θ); //tan(θ)的值
Math.atan(θ); //actan(θ)的值
Math.exp(x); //e的x次幂
Math.log(x); //以e为底的对数
Math.log10(x); //以10为底的对数
Math.PI //圆周率π
Math.E //自然数e
数值类型之间的转换
经常需要将一种数值类型转换为另一种数值类型。下图给出了数值类型之间的合法转换。图中的6个实心箭头,表示无信息丢失的转换;3个虚箭头表示可能有精度损失的转换。
当使用不同类型的两个数值进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算。
强制类型转换
在必要的时候,int类型的值将会自动地转换成double类型。但另一方面,有时也需要将double转换成int。在Java中,允许进行这种数值之间的类型转换。在这种情况下,需要通过强制类型转换实现这个操作。强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟着待转换的变量名。例如:
double x=10.001;
int nx=(int) x;
这样,变量nx的值为10,强制类型转换通过截断小数部分将浮点值转换为整型。如果想对浮点数进行舍人运算, 以便得到最接近的整数(在很多情况下, 这种操作更有用), 那就需要使用 Math.round 方法:
double x=9.699;
int nx=(int) Math.round(x);
现在, 变量 nx 的值为 10。 当调用 round 的时候, 仍然需要使用强制类型转换( int)。 其原因是== round 方法返回的结果为 long 类型==,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将 long 类型转换成 int 类型。
结合赋值和运算符
可以在赋值中使用二元运算符,这是一种很方便的简写形式。例如:
x+=4; //等价于x=x+4
自增与自减运算符
在Java中,借鉴了C和C++的做法,也提供了自增、自减运算符:n++将变量n的当前值加1,n–则将n的值减1。例如
int n=12;
n++;
将n的值改为13.由于自增、自减运算发会改变变量的值,所以它们的操作数不能是数值。
自增、自减运算符有两种形式;前面介绍的是运算符放在操作数后面的“后缀”形式。还有一种“前缀”形式:++n。后缀和前缀形式都会使变量值加 1 或减 1。但用在表达式中时,二者就有区别了。前缀形式会先完成加 1; 而后缀形式会使用变量原来的值。
int m=3;
int n=3;
int a=2*++m; //a=8,m=4;
int b=2*n++; //b=6,n=3;
建议不要在表达式中使用自增、自减运算符,因为这样的代码容易让人困惑,而且会带来bug。
关系和boolean运算符
Java 包含丰富的关系运算符:要检测相等性,可以使用两个等号 ==。另外可以使用!= 检测不相等。例如
3==7 //false
3!=7 //true
最后, 还有经常使用的 < (小于、) > (大于)、<=(小于等于)和 >= (大于等于)运算符。
Java 沿用了 C++ 的做法,使用 && 表示逻辑“ 与” 运算符,使用丨| 表示逻辑“ 或” 运算符。从 != 运算符可以想到,感叹号!就是逻辑非运算符。&& 和丨| 运算符是按照“ 短路” 方式来求值的: 如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。因此,可以利用这一点来避免错误。
最后一点,Java 支持三元操作符 ?:,如果条件为 true, 下面的表达式
condition ? expression1 : expression2
就为第一个表达式的值,否则计算为第二个表达式的值。
位运算符
处理整型类型时,可以直接对组成整型数值的各个位完成操作。这意味着可以使用掩码技术得到整数中的各个位。位运算符包括:
& ("and") | ("or") A ("XOr") ~ ("not")
另外,还有 >>和 <<运算符将位模式左移或右移 。最后,>>>运算符会用 0 填充高位,这与>>不同,它会用符号位填充高位。不存在<<<运算符。
括号与运算符级别
下给出了运算符的优先级。 如果不使用圆括号, 就按照给出的运算符优先级次序进行计算。同一个级别的运算符按照从左到右的次序进行计算(除了表中给出的右结合运算符外。)
运算符 | 结合性 |
---|---|
[ ].( )(方法调用) | 从左向右 |
! ~ ++ – +(一元运算) -(一元运算) ( )(强制类型转换) new | 从右向左 |
* / % | 从左向右 |
+ - | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
| | 从左向右 |
&& | 从左向右 |
|| | 从左向右 |
?: | 从右向左 |
= += -= *= %= &= |= ^= <<= >>= >>>= | 从右向左 |
枚举类型
有时候,变量的取值只在一个有限的集合内。针对这种情况,可以自定义枚举类型。枚举类型包括有限个命名的值。
标签:类型转换,知识点,Java,int,运算符,类型,左向右,Math 来源: https://blog.csdn.net/z__csdn/article/details/110143791