我正在尝试使用简单的if / else返回不同的值来检查Java中的偶数。
if (move % 2 == 0) {
return "o";
} else {
return "O";
}
我知道在JavaScript中你可以使用
if () : a ? b ;
这可以在Java中使用吗?
答案 0 :(得分:12)
是的,您可以在Java中使用三元运算符:
return (move % 2 == 0) ? "o" : "O";
只是不要指望它比if
- else
更快。
答案 1 :(得分:3)
是的,您可以使用Java中的conditional operator:
return (move % 2 == 0) ? "o": "O";
它不会让你的程序更快,但它更简洁一点,如果你熟悉条件运算符,你可能会发现它更容易阅读。
但相反,如果你不知道这个运算符,就很难猜出代码的作用。
答案 2 :(得分:1)
是的,你可以。它被称为ternary operator
用法:
true ? case1 : case2; // returns case1
false ? case1 : case2; // returns case2
答案 3 :(得分:1)
您应该专注于if
,而不是“优化”?
与三元运算符move % 2 == 0
。如果move
是整数而不是浮点变量,则可能更快:
if( move & 1 == 0 )
return "E";
else
return "O";
位操作通常比除法或模数计算更快。
答案 4 :(得分:0)
(conditional) ? if-true-statement : if-false-statement;
是的,可以查看维基百科页面Ternary Operators
答案 5 :(得分:0)
你无法以高效或低效的方式使用if语句。
......还有更多 - 请记住,这不仅适用于if语句:
出于性能原因,您应该从不尝试优化使用的表达式 - 编写专注于可读性(以及术语,可维护性)的代码。原因是有一个JIT(即时编译器)可以优化字节码,并修改你在字节码中指定的指令。
如果你正在考虑使用三元运算符,那么考虑一下,这会导致更难理解代码(如果你是多个人在处理代码)。如果只是你在编写代码,那就随意做 - 是的:
Object var = boolean-expression ? some-value : another-value;
比以下更紧凑:
Object var;
if (boolean-expression)
var = some-value;
else
var = another-value;
答案 6 :(得分:0)
如果你真的需要这个非常快,这是非常可疑的,你还应该考虑一个查找表:
static final char[] moveChar = {"o", "O"};
// ...
return moveChar[move % 2];
但是我不会在没有计时的情况下实施这里给出的任何建议,在我们已经证明你现在拥有的东西确实是瓶颈之前我根本不会做任何事情,我的意思是它消耗了超过CPU时间的50%左右。