以下代码的类似代码是什么?

时间:2015-04-30 11:38:26

标签: java syntax

我想了解以下代码:

this.area[y][x + i] = tmp != null ? String.valueOf(tmp.charAt(i)) : " ";

这类似于以下代码吗?

if(tmp != null){
   this.area[y][x + i] = String.valueOf(tmp.charAt(i));
} else {
   this.area[y][x + i] = "";
}

4 个答案:

答案 0 :(得分:5)

不,他们不一样!您在ternary operator中有空格,但在if-else中没有空格。相同/相似的代码将是,

if(tmp != null){
this.area[y][x + i] = String.valueOf(tmp.charAt(i));
} else {
this.area[y][x + i] = " "; //observe white-space, maybe important for your case
}

答案 1 :(得分:1)

是的,请查看JLS doc中的三元运算符。这正是这段代码:

if(tmp != null){
   this.area[y][x + i] = String.valueOf(tmp.charAt(i));
} else {
   this.area[y][x + i] = " ";  // space!
}

答案 2 :(得分:0)

这称为三元运算符。它只是if-then运算符的较短版本。

variable x = (expression) ? value if true : value if false

所以基本上你的两段代码都是一样的。

答案 3 :(得分:0)

第一个代码段:

this.area[y][x + i] = tmp != null ? String.valueOf(tmp.charAt(i)) : " ";

被称为三元运算符。它是if-else声明的简写版本。

格式

boolean x = (boolean-expression) ? value-if-true : value-if-false