什么是Java中有效的if / else?

我正在尝试使用简单的if / else返回不同​​的值来检查Java中的偶数。

if (move % 2 == 0) { return "o"; } else { return "O"; } 

我知道你可以使用JavaScript

 if () : a ? b ; 

这可以用在Java中吗?

是的,您可以在Java中使用三元运算符:

 return (move % 2 == 0) ? "o" : "O"; 

只是不要指望它比ifelse更快。

是的,您可以在Java中使用条件运算符 :

 return (move % 2 == 0) ? "o": "O"; 

它不会让你的程序更快,但它更简洁一点,如果你熟悉条件运算符,你可能会发现它更容易阅读。

但相反,如果您不了解此运算符,则很难猜测代码的作用。

是的你可以。 它被称为三元运算符

用法:

  true ? case1 : case2; // returns case1 false ? case1 : case2; // returns case2 

而不是“优化” if与三元运算符? 你应该专注于move % 2 == 0 。 如果move是整数而不是浮点变量,则可能更快:

 if( move & 1 == 0 ) return "E"; else return "O"; 

位操作通常比除法或模数计算更快。

(conditional) ? if-true-statement : if-false-statement;

是的,可以查看三元运营商的维基百科页面

您无法以更高效或更低效的方式使用if语句。

……还有更多 – 请记住,这不仅适用于if语句:

出于性能原因,您不应该尝试优化使用的表达式 – 编写专注于可读性(以及术语,可维护性)的代码。 原因是有一个JIT(即时编译器)可以优化字节码,并修改你在字节码中指定的指令。

如果你正在考虑使用三元运算符,那么考虑一下,这会导致更难理解代码(如果你是多个人在处理代码)。 如果只是你在处理代码,那就按你的意愿去做 – 是的:

 Object var = boolean-expression ? some-value : another-value; 

比以下更紧凑:

 Object var; if (boolean-expression) var = some-value; else var = another-value; 

如果你真的需要这个非常快,这是非常可疑的,你还应该考虑一个查找表:

 static final char[] moveChar = {"o", "O"}; // ... return moveChar[move % 2]; 

但是我不会实现这里提出的任何建议而没有计时,我不会做任何事情,直到事实certificate你现在拥有的东西真的是一个瓶颈,我的意思是它消耗的东西超过了50%的CPU时间。