1、数学函数与常量
- 在 Java 中,一些高级需要借助 Math 类。
- 两个用于表示 π 和 e 常量的近似值。
Math.PI
Math.E
- 注意:Math类为了达到最快的性能,所有的方法都是使用计算机浮点单元中的例程;如果为了得到一个可预测的结果,应该使用 StrictMath 。
2、数据类型转换
- 实心箭头表示无信息丢失的转换,虚箭头表示有可能有精度损失的转换。
int i = 123456789;
float f = i;
double d = i;
System.out.println(f);// 输出1.23456792E8,少了一位精度
System.out.println(d);// 输出1.23456789E8,没有精度损失
3、强制类型转换
- 强制类型的转换很可能丢失一些信息。
double d = 9.997;
int i = (int) d;
System.out.println(i);// 输出9,小数部分信息丢失
- 如果类型转换超过了目标类型的表示范围,结果会截断成一个完全不同的值。
int i = 300;
byte b = (byte) i;
System.out.println(b);//输出44
/*
* 300的二进制是 100101100
* byte占一个字节,截取成 00101100
* 转换成十进制是44
* */
4、括号与运算符级别
优先级 | 运算符 | 综合性 |
1 | ()[]. | 从左到右 |
2 | !+(正)-(负)~ ++ - - | 从右向左 |
3 | */% | 从左到右 |
4 | +(加)-(减) | 从左向右 |
5 | << >> >>> | 从左到右 |
6 | < <= >= > instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | &(按位与) | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右向左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
- 为了便于记忆,想了一个记忆口诀,通过单目和三目的恩怨情仇联系起来:
单目四则畏关系
逻辑三目来赋值
单目:! +(正) -(负)~ ++ - -
四则:* / % +(加) -(减)
畏:<< >> >>>
关系:< <= >= > == !=
逻辑:& ^ | && ||
三目:?:
赋值:= += -= *= /= %= &= |= ^= ~= <<= >>= >>>=
5、枚举类型
- 有时变量的取值只在一个有限的集合内,可以使用自定义枚举,枚举类型包括有限个命名的值。
- 枚举类型的值是通过运行期构造出来对象来表示的,所以不能使用 “==” 运算符。
- 枚举类型有利于扩展 switch 语句使用范围。
public enum weekDayEnum {
Mon, Tue, Wed, Thu, Fri, Sat, Sun
};//定义枚举类型
static void weekDaySchedule() {
weekDayEnum today = weekDayEnum.Sat;
//获得一个枚举对象
switch (today) {
case Mon:
System.out.println("work work work");
break;
case Sat:
System.out.println("go to paly basketball");
break;
default:
System.out.println("you must be kidding");
break;
}
}