简短的java if-else语句

简短的java if-else语句,java,if-statement,Java,If Statement,我有一个if-else简短声明如下: (one == two) ? "do this" : "do this" 是否需要在该语句中添加if-else 我似乎找不到任何有if-else 我只是针对简短的陈述,而不是直接说“如果有别的话” 谢谢。您可以将其扩展到任意数量的子句,这与if-else构造非常相似 return a == b? "b" : a == c? "c" : a == d? "d" : "x"; 在这种形式中,它在形状和语义上都非常类似于Lisp的

我有一个if-else简短声明如下:

(one == two) ? "do this" : "do this"
是否需要在该语句中添加if-else

我似乎找不到任何有if-else

我只是针对简短的陈述,而不是直接说“如果有别的话”


谢谢。

您可以将其扩展到任意数量的子句,这与
if-else
构造非常相似

return a == b? "b"
     : a == c? "c"
     : a == d? "d"
     : "x";
在这种形式中,它在形状和语义上都非常类似于Lisp的
cond


但是,请注意,这不是“if/else的简写”,因为它是一个表达式,而if/else是一个语句。如果表达式有任何副作用,那么滥用三元运算符将是非常糟糕的。

如果要转换以下内容:

if(A) {
    return X;
}
else if(B) {
    return Y;
}
else {
    return Z;
}
您可以这样写:

A ? X : (B ? Y : Z);
因此,您可以将
else if
作为条件写入上表达式的else部分(在
之后):

然而,我强烈建议不要太多级联。代码变得极不可读,
?:代码结构从未为此而设计。

的“:”是else

(one == two) ? "do this" : "do that"

如果一等于二,那么就“做这个”,否则(如果一不等于二)就“做那个”。

我有时会在这种情况下使用地图:

private final static Map <String, String> codesMap = <generate the map with values>
...
codesMap.get(one)
private final static Map codesMap=
...
代码映射获取(一)

是的,可以使用if-else编写上述语句。这里使用三元运算符

if(one==two)
 {
    //Code
 }
else
 {
    //code
 }
三元运算符通过在一条语句中写入条件而不是使用“?:”在多条语句中写入条件来减少代码行(LOC)

有关更多信息,请参阅:


这类似于
if-else语句
,但从技术上讲,您可以将其转换为
if-else语句
。看起来是这样的:

if (one == two) {
"do this"
} else {
"do that"
}
如果您的问题是是否可以在
(一=二)?“这样做”:“这样做”
。。。不是,而是应该使用嵌套的if语句

你的意思是什么?虽然你能做到(就像@CommuSoft在他的回答中所说的),但你应该避免这种构造,因为它们创建的代码更难理解。对于简单的检查,缩写的if可以,对于更复杂的检查,应该使用if…else if…else。内存不是一个限制因素,将来使用您的代码的任何人都会感谢不必处理Looong oneliner if构造。它纯粹用于if、if-else、else三个条件。我能理解为什么,为了可读性,如果有,你不想添加太多其他内容!谢谢。@sark9012:当然可以:)。Java编译器在嵌套大量代码方面没有问题。但是,对于一个人来说,理解成百上千的嵌套语句是非常不愉快的。这并没有错,但如果一个人产生人类无法阅读的代码,他最终会付出代价。伟大的答案,可以永远持续下去!这并不完全等同,因为
if
语句可能很复杂,并且具有固有的优先级(即第一个条件的优先级高于第二个条件)。此外,与单个条件相比,查找字典的成本很高。@CommuSoft您可以尝试使用orderedMaps查找优先级。至于性能——是的,这在某些应用程序中可能是个问题,而不是一个灵丹妙药。