return t == null? -1:t.height;做什么 ?并且:是吗?

时间:2013-06-01 14:54:55

标签: java conditional-statements

我遇到这段代码来计算AVL树节点的高度:

private int height (AvlNode<T> t) {
  return t == null ? -1 : t.height; 
}

?:是什么意思?

5 个答案:

答案 0 :(得分:7)

这是一个三元运营商。一般语法是:

cond ? ifTrue : ifFalse

其中cond是返回布尔值的表达式。当ifTrue为真时,整个表达式的评估结果为cond,否则评估为ifFalse。当然,ifTrueifFalse都必须属于兼容类型(请注意,对象可以使用null。)

以上代码在实践中完全等同于以下内容:

if (t == null)
    return -1;
return t.height;

这是一种在许多语言中都能找到的非常经典的运算符。一种没有此运算符的语言是Python。

答案 1 :(得分:1)

就像是一个if测试。

您的示例与此代码类似:

if (t == null) return -1;
else return t.height;

答案 2 :(得分:0)

如果t为null,它将返回-1,否则它将返回到.high。这是一种更简洁的方法来实现空检查,而不是

if(t==null)
   return -1
else
   return t.hight

但它可能看起来比“if approach”

更神秘

答案 3 :(得分:0)

(a > b) ? a : b; 
  

是一个返回两个值之一的表达式,

     
    

或b。测试条件(a> b)。如果是第一个是真的     返回值a。如果为假,则第二个值b为     回。返回的值取决于条件     测试,a&gt;湾条件可以是返回a的任何表达式     布尔值。

  

答案 4 :(得分:0)

相当于:

if (t==null)
    return -1;
else
    return t.height;

条件运算符? : 用于根据第一个表达式的值返回任一表达式的结果。

它的工作原理是评估 boolean expr ,然后决定要评估的表达式。