Java 中包含多种运算符:算数运算符、关系运算符、逻辑运算符、位运算符。在 Math 类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。要生成一个随机数,可以使用 Random 对象。
~
本篇主要记录内容包括:运算符、数学工具类
Java 中包含多种运算符:算数运算符、关系运算符、逻辑运算符、位运算符。
在 Java中,使用算术运算符 +
-
*
/
表示加、减、乘、除运算。整数的求余操作(有时称为取模)用 %
表示。
程序员都知道加 1、减 1 是数值变量最常见的操作。在 Java 中,借鉴了 C 和 C++ 的做法,也提供了自增、自减运算符:n++
将变量 n 的当前值加 1,n--
则将 n 的值减1。
注意事项:①加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串;②当参与 /
运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。③%
为整除取余符号,小数取余没有意义,结果符号与被取余符号相同;④整数做被除数,0 不能做除数,否则报错;⑤小数做被除数,整除 0 结果为 Infinity
,对 0 取模结果为 NaN
。
Java 包含丰富的关系运算符。要检测相等性,可以使用两个等号 ==
。例如,3==7
的值为 false,另外可以使用 !=
检测不相等。例如,例如,3!=7
的值为 true。最后,还有经常使用的 <
(小于)、>
(大于)、<=
(小于等于)和 >=
(大于等于)运算符。
注意事项:①结果只能是true
和false
;②字符间的比较,比较的是其ASCII
值;③浮点数与整数比较,只要值相等,就返回true
。
Java 沿用了 C++ 的做法,使用 &&
表示逻辑 “与” 运算符,使用||表示逻辑 “或” 运算符。从 !=
运算符可以想到,感叹号 ! 就是逻辑非运算符。&&
和 ||
运算符是按照 “短路” 方式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
注意事项:①&&
: 又叫短路运算符,A&&B
,如果A
为假,不会去计算B
的值,直接得到结果为 false;②&
: A&B
,即使A
为假,也会计算B
的值;③||
: 也是短路运算符,A||B
,如果A
为真,不会去计算B
的值,直接得到结果为 true;④|
: A|B
,即使A
为真,也会计算 B
的值;⑤^
: 异或,左右两边条件结果相同,结果就为 false,左右两边结果不同,结果就为 true。
处理整型类型时,可以直接对组成整型数值的各个位完成操作。这意味着可以使用掩码技术得到整数中的各个位。位运算符包括:&
|
~
^
>>
<<
>>>
注意事项:①&
:“与” 运算符,两个都为 1 时才为 1,其他情况均为 0;②|
:“或” 运算符,两个都为 0 时才为 0,其他情况均为 1;③~
:“非” 运算符,取反,即 1 变为 0,0 变为1;④^
:“异或” 运算符,相同值为 0,不同值为 1 ;⑤>>
:“右移” 运算符,m>>n
,把 m 的二进制数右移 n 位,m 为正数,高位全部补 0,m 为负数,高位全部补 1;⑥<<
:“左移” 运算符,m<
>>>
:“无符号右移” 运算符,m>>>n
,整数 m 表示的二进制右移 n 位,不论正负数,高位都补 0。
在 Math 类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。下面的汇总了一部分最常用的方法。
方法名 | 方法说明 | 方法名 | 方法说明 |
---|---|---|---|
Math.sqrt(i); | 求平方根 | Math.rint(f); | 奇数向上,偶数向下取整(浮点型) |
Math.ceil(f); | 向上取整 | Math.floor(f); | 向下取整 |
Math.pow(m, n); | m 的 n 次幂 | Math.round(i); | 四舍五入取整(整形) |
Math.random(); | 0-1 的随机数(浮点型) | Math.abs(-i); | 取绝对值 |
Math.max(a, b); | 返回大值 | Math.min(a, b); | 返回小值 |
Math.signum(i) | 小于 0 返回 -1 / 等于 0 返回 0 / 大于 0 返回 1 |
Math 数学类还提供了三角函数:
Math.sin(3.14); // 0.00159...
Math.cos(3.14); // -0.9999...
Math.tan(3.14); // -0.0015...
Math.asin(1.0); // 1.57079...
Math.acos(1.0); // 0.0
Math 还提供了几个数学常量:
double pi = Math.PI; // 3.14159...
double e = Math.E; // 2.7182818...
Math.sin(Math.PI / 6); // sin(π/6) = 0.5
要生成一个随机数,可以使用 Random 对象。下面的汇总了一部分最常用的方法。
方法名 | 方法说明 | 方法名 | 方法说明 |
---|---|---|---|
nextInt(); | 随机生成 int 数据类型范围的数 | nextInt(i); | 从0开始,左闭右开随机生成 |
nextLong() | 随机生成 long 数据类型范围的数 | nextFloat() | 生成一个 [0,1) 之间的 float |
nextDouble() | 生成一个 [0,1) 之间的 double |