条件执行
if 语句
int a=10;
if(a%2==0){
System.out.println("偶数");
}
三元运算符
int max = x > y ? x : y;
switch 语句
int a = 1;
switch(a){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
default:
System.out.println("3");
}
switch 语句相比 if 性能更高的原因
- switch 的转换和具体系统实现有关。如果分支比较少,可能会转换为跳转指令。如果分支比较多,会使用更高效的跳转表。跳转表是一个映射表,存储了可能的值以及要跳转到的地址
- 跳转表其中的值必须为整数,且按大小顺序排序。按大小排序的整数可以使用高效的二分查找。
- switch 值的类型可以是 byte、short、int、char、枚举和 String。不可以使用 long,为什么呢?
- 跳转表值的存储空间一般为 32 位,容纳不下 long。
- String 是通过 hashCode 方法转换为整数的,但不同 String 的 hashCode 可能相同,跳转后会再次根据 String 的内容进行比较判断。
条件执行语句的具体实现
- 条件执行转换成了跳转指令。
- 条件跳转;条件跳转检查某个条件,满足则进行跳转
- 无条件跳转:无条件跳转则是直接进行跳转。
- 跳转到跳转语句之前的指令,就形成了 循环语句。