【啃透Java基础知识】3Java基本运算符
参考资料:《Java 核心技术卷 I》
本章介绍了关于Java基本运算符的知识。
Java运算符
原码,反码,补码
计算机中的数都是以二进制的形式存储的。其中二进制的最高位是符号位,0为正,1为负。
正数的原码,反码,补码形式相同。
负数的反码为原码符号位不变,其他位按位取反。补码为反码加1。
计算机中任何数的运算都是补码形式的运算,而结果按照原码显示。
算术运算符
Java中,有+
、-
、*
、/
来表示加减乘除。
除法运算中,若两个操作数都是整数,则结果也是整数,这被称为整数除法。而其中若有一个及以上的浮点数,则为浮点除法。
Java中%
表示取余,意味对操作数取余数。如:
|
|
在Java中,整数和浮点数都可以取余操作。对于浮点数取余,可以将其等效为以下过程:
a%b => a-(int)(a/b)*b
Java中还有自增运算符++
和自减运算符--
。这两种运算符为单目运算符,可以放在变量的前面或者后面,如:
++i
与i++
。
两者的区别在于:
a = ++i; => i += 1; temp = i; a = temp;
a = i++; => temp = i; i += 1; a = temp;
辨析:
|
|
赋值运算符
赋值运算符=
的左侧必须是变量,而右侧可以是变量,常量以及表达式。
赋值运算符可以和算术运算符相结合,如:
x += 1;
等价于x = x + 1;
逻辑运算符
逻辑运算符中包括关系运算符和逻辑运算符。
关系运算符
常见的关系运算符有
==
>
<
>=
<=
这些运算符的用法与数学上一致,当表达式成立时,会返回true
否则返回false
。
逻辑运算符
逻辑运算符包括与&&
、或||
、非!
。
其中
当&&
两侧的表达式全为true
时,返回true
,否则返回false
。
当||
两侧表达式至少有一个为true
时,返回true
,否则返回false
。
当!
后的表达式为true
时,返回false
,反之亦然。
当&&
所连接的第一个表达式为false
时,整个表达式的结果必定为false
,因此第二个表达式不会执行。
当||
所连接的第一个表达式为true
时,整个表达式的结果必定为true
,因此第二个表达式不会执行。
条件运算符
条件运算符? :
是一个三目运算符。表达式为:
condition ? expression1 : expression2
其意为当condition
为true
时,表达式的值为expression1
否则为expression2
。
位运算符
位运算符有与&
、或|
、异或^
、非~
,以及移位运算符。
- 与
&
对两操作数的补码进行逐位与操作。 - 或
|
对两操作数的补码进行逐位或操作。 - 异或
^
对两操作数的补码进行逐位异或操作。 - 非
~
对操作数的补码进行逐位取反操作。
移位运算符有算数左移<<
、算数右移>>
和无符号右移>>>
。
- 算数左移
<<
对操作数的补码向左移位,低位用0补全。 - 算数右移
>>
对操作数的补码向右移位,高位用符号位补全。 - 无符号右移
>>>
对操作数的补码向右移位,高位用0补全。
数学函数
对于Java基本运算符没覆盖到的一些数学运算,Java提供了一个Math
类,其中包含可能会用到的各种数学函数。如:
- Math.sqrt(x)
对x进行开方。
- Math.pow(x, a)
计算x的a次方。
- Math.sin(x)
求出sin x。
- Math.cos(x)
求出cos x。
- Math.tan(x)
求出tan x。
- Math.atan(x)
根据正切值x求角度。
- Math.exp(x)
求e的x次方。
- Math.log(x)
求$ln x$。
- Math.log10(x)
求$log_{10}x$。
还有常用常量:
Math.PI
Math.E