在为 Android 开发时,switch 语句是否比 if-else 链更有效? switch 语句需要更多行代码,但从轶事证据来看,它似乎在 Android 应用程序中更常用。
下面的示例说明了使用 case 语句和 if-else 链的相同编程结构。 switch 语句需要 10 行,而 if-else 链需要 7 行。
案例陈述
public void onClickWithSwitch(View v) {
switch(v.getId()) {
case R.id.buttonA:
buttonA();
break;
case R.id.buttonB:
buttonB();
break;
case R.id.buttonC:
buttonC();
}
}
If-else 链
public void onClickWithIf(View v) {
int id = v.getId();
if(id == R.id.buttonA)
buttonA();
else if (id == R.id.buttonB)
buttonB();
else if (id == R.id.buttonC)
buttonC();
}
为什么 switch 比 if-else 链更常见?与 if-else 链相比,switch 语句是否提供更好的性能?
最佳答案
语言有 switch
语句的原因是允许编译器生成一个跳转表,如果它很大,它会很快,因为在运行时它可以在 O(1 ) 而不是 O(N) 时间。
只有在有很多情况并且在每个情况下执行的代码不会花费太多时间,并且程序在这段代码中花费了很多时间的情况下,它才对速度有帮助。
除此之外,这纯粹是一个品味问题。
代码行数和速度之间没有关系。重要的是生成的汇编语言代码类型,我鼓励您熟悉它。
关于java - 对于 Android 事件,为什么 switch 语句比 if-else 链更常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4761284/