Java布尔类型返回if语句

3
有人能用简单易懂的英语解释一下这个声明背后的逻辑吗?
return mContainsLoadingRow ? (getContentDataSize() + 1) : getContentDataSize();

假设mContainsLoadingRow是一个布尔值,如果mContainsLoadingRowtrue
则返回getContentDataSize() + 1
如果不是,则返回getContentDataSize()
这样理解是否正确?

1
是的,你可以这样写:如果(mContainsLoadingRow)返回getContentDataSize() + 1,否则返回getContentDataSize()。 - Jens
2个回答

3

这个完整的表达式被称为Java中的三目运算符

代码语句

mContainsLoadingRow ? (getContentDataSize() + 1) : getContentDataSize();
        ||                       ||                         ||
 //boolean expression      //return if true          //return if false

在这份代码中,mContainsLoadingRow 是一个布尔变量,其值为 truefalse。你也可以用其他布尔表达式来替换 mContainsLoadingRow,比如(a>b或b==a或b<= a等)。 ? (问号):使我们能够判断它是真还是假。
如果是 true,那么表达式 (getContentDataSize() + 1) 将被返回。
如果是 false,那么表达式 getContentDataSize() 的值将被返回。

另一种写法是:"return getContentDataSize() + mContainsLoadingRow ? 1 : 0;" - Trap

0
int x = 0;
if (0 < 1){
  x = 2;
}else{
  x = 42;
}
// in short:
x = (0<1) ? 2 : 42;

是的,你说得对


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接