【发布时间】:2015-02-11 17:19:12
【问题描述】:
我正在尝试使我的代码更高效,并替换我编写的一堆 if 语句。到目前为止,我的程序基本上检查输入了哪些运算符(例如 +、- 等),然后计算它。例如 1 + 5 给出 6。当程序计算数字之间的符号(在我的示例中为“+”)时,它将检查运算符是什么,然后相应地继续。例如,如果它是一个“+”,它将接受 1 并添加 5。代码如下所示:
switch (op) {
case "+": // Addition
return args[0] + args[1];
case "-": // Subtraction
return args[0] - args[1];
case "*": // Multiplication
return args[0] * args[1];
case "/": // Division
return args[0] / args[1];
我想知道是否可以用某种语句替换整个块,该语句将从字符串中检测运算符并将其转换为操作?我意识到对于一些运算符来说,使用 switch 语句可能更容易,但我有很多它们,并且在 switch 语句的顶部和底部评估运算符之间存在 5-10 毫秒的差异。
【问题讨论】:
-
具有很多情况的 Switch 语句已经经过编译器优化,性能与基于哈希的查找相当,或者至少比线性 if/else 搜索要好得多。
标签: java if-statement switch-statement