java - 对于 Android 事件,为什么 switch 语句比 if-else 链更常见?

标签 java android performance if-statement switch-statement

在为 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/

相关文章:

简单联合的情况下的SQL查询性能

sql-server - 除了 MS Profiler 之外,还有哪些工具可用于分析 SQL Server 中的存储过程?

java - 程序未执行线程

java - 如何使用 Retrofit android 设置工具栏标题?

android - SQLite like语句用特殊字符替换空格

java - 我正在为安卓开发键盘。如何更改按键的文字颜色?

Android:为什么 native 代码比 Java 代码快这么多

java - Flux 完成时获取 Flux 大小

java - Struts 2 显示标签/单选按钮

java - 文本方面 JTextArea