2014-09-21 113 views
0
ltVal = node.left != null ? node.left.height : 0; 

我认为这是用Java编写的,任何人都可以解释这是什么意思?无法理解这样的速记符号含义?在爪哇

+2

你真的用“line”标记这个?我想你误解了标签。 – Maroun 2014-09-21 06:22:49

+0

阅读http://en.wikipedia.org/wiki/%3F: – NPE 2014-09-21 06:22:55

+1

如果'node.left'不是'null',则将其高度指定为'ltVal',否则将值赋值给它。谷歌“三元运营商” – alfasin 2014-09-21 06:24:36

回答

2

它被称为三元运算符,它是只需要3操作数的运算符。在更好的感觉,它是代表短格式有条件的经营者

常规语法

boolean expression ? value1 : value2 

你的例子:

ltVal = node.left != null ? node.left.height : 0; 

为相同

if(node.left != null) 
     itVal = node.left.height 
    else 
     itval = 0; 
+0

感谢清理的东西,如果我没有看到任何括号xD,我会感到困惑xD没有意识到它是一个三元运算符被分配到“ltVal”,直到有人解释xD – ZeferiniX 2014-09-21 06:32:31

+0

@ZeferiniX不担心你会得到使用它。你应该使用这种编码cuz lambda已经到了Java。 :) – 2014-09-21 06:33:24

+0

不插入括号是否是一种好习惯?我发现使用三元运算符的大多数示例没有括号@ _ @如果它是 ltVal =((node.left!= null)?node.left.height:0); – ZeferiniX 2014-09-21 06:38:24