我想了解以下代码:
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] = "";
}
答案 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