条件执行

if 语句

int a=10;
if(a%2==0){
	System.out.println("偶数");
}

三元运算符

// 如果x>y满足,max=x,否则max=y
int max = x > y ? x : y;

switch 语句

//switch语句穿透:每条case语句后面都应该跟break,否则会继续执行后面case中的代码直到碰到break语句或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 的内容进行比较判断。

条件执行语句的具体实现

  • 条件执行转换成了跳转指令。
    • 条件跳转;条件跳转检查某个条件,满足则进行跳转
    • 无条件跳转:无条件跳转则是直接进行跳转。
  • 跳转到跳转语句之前的指令,就形成了 循环语句

文章作者: huan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 huan !
  目录