Java初学之运算符
Java初学之运算符
-
使用
+,-,*,/表示加减乘除,%为取余 -
当参与
/运算的两个操作数都是整数时,表示整数除法,否则为浮点除法int paperWidth = 5; int paperHeight = 2; System.out.println(paperWidth / paperHeight); // 2double paperWidth = 5; int paperHeight = 2; System.out.println(paperWidth / paperHeight); // 2.5double paperWidth = 5.0; int paperHeight = 2; System.out.println(paperWidth / paperHeight); // 2.5 -
整数除以0会产生异常,浮点数除以0会得到无穷大或者
NaNpublic class FirstSample { public static void main(String[] args) { double paperWidth = 1.0; int paperHeight = 0; System.out.println(paperWidth / paperHeight); } }Infinity
public class FirstSample { public static void main(String[] args) { int paperWidth = 1; int paperHeight = 0; System.out.println(paperWidth / paperHeight); } }Exception in thread "main" java.lang.ArithmeticException: / by zero
at FirstSample.main(FirstSample.java:8)
数学函数与常量
| 函数 | 方法 |
|---|---|
| 平方根 | Math.sqrt(x); |
| 幂运算 | Math.pow(x, a); |
| 指数函数 | Math.exp |
| 对数函数 | Math.log |
| 以10为底的对数 | Math.log10 |
数值类型之间的转换

-
实心箭头表示无信息丢失的转换
-
虚箭头表示可能有精度损失的转换
public class FirstSample { public static void main(String[] args) { int n = 123456789; float f = n; System.out.println(f); } } // 1.23456792E8
二元操作的数据自动转换
- 如果两个操作数中有一个是
double类型, 另一个操作数就会转换为double类型。 - 否则, 如果其中一个操作数是
float类型, 另一个操作数将会转换为float类型。 - 否则, 如果其中一个操作数是
long类型, 另一个操作数将会转换为long类型。 - 否则, 两个操作数都将被转换为
int类型。
强制类型转换(cast)
double x = 9.997;
int nx = (int) x; // 9
-
Math.round对浮点数进行舍人运算, 以便得到最接近的整数double x = 9.997; int nx = (int) Math.round(x); // 10- 由于
round方法返回的结果为long 类型,由于存在信息丢失的可能性, 所以只有使用显式的强制类型转换才能够将long 类型转换成int 类型。
- 由于
结合赋值和运算符
-
使用方法
x += 4 // 等价于 x = x + 4
```
-
如果运算符得到的值类型与左侧操作数的类型不同,就会发生强制类型转换
int x = 1; x += 1.5; // 2,相当于x = (int)(x+ 3.5)
自增与自减运算符
-
基本使用
int n = 12; n++ //13 -
自增与自减会有前缀和后缀形式
-
前缀形式会先完成加1
-
后缀形式会使用变量原来的值
int m = 7; int n = 7; int a = 2 * ++m; // now a is 16, m is 8 int b = 2 * n++; // now b is 14, n is 8
-
关系和boolean运算符
大小判断:==,<,>,<=,>=, !=
逻辑运算:
| 运算符 | 说明 |
|---|---|
| && | 与 |
| || | 或 |
| ! | 非 |
-
&&和||按照“短路”的方式来求值:如果第一个操作数已经能够确定表达式的值, 第二个操作数就不必计算了。例如:
x != 0 && 1 / x > x + y // no division by 0如果x等于0,那么第二部分就不会计算了,因此,如果x为0,也就不会计算
1/x,除以0的错误就不会出现
三元操作符
格式为:?:,表达式如下:
condition ? expression1 : expression2;
如果condition为真,则执行expression1,否则执行expression2
例如:
x < y ? x : y;
该行表示返回x和y中较小的那个
位运算符
| 运算符 | 说明 |
|---|---|
| & | and |
| | | or |
| ^ | xor(异或) |
| ~ | not |
| >> | 右移 |
| << | 左移 |
注:>>>运算符会用0填充高位,>>会用符号填充,不存在<<<
简单区别如下,具体区别见Java >> and >>> bitwise shift operators)
>>:右移n位后,它会保留符号(正数或负数)>>>:右移n位,它将忽略符号
运算优先级
注意点:+=是右结合运算符
a += b += c;
//等价于
a += (b += c)
枚举类型
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARCE}
// 声明变量
Size s = Size.MEDIUM;
变量的取值只在一个有限的集合内。例如: 销售的服装或比萨饼只有小、中、
大和超大这四种尺寸。

浙公网安备 33010602011771号