解释Java语法

时间:2013-10-23 02:11:39

标签: java syntax

我正在查看包含以下内容的Java代码:

User rv = tmp != null && tmp.size() > 0 ? tmp.get(0) : null;

我对Java语法不是很强。我的解释是,rv = tmp只要tmp null tmp size > 0null,否则它等于{{1}} }。我是对的吗?

4 个答案:

答案 0 :(得分:7)

这是这个表达的“解剖学”:

rv =                                // assignment of a conditional expression
    (tmp != null && tmp.size() > 0) // condition
?   tmp.get(0)                      // on true
:   null;                           // on false

这是确保没有异常访问列表元素零的常用方法:条件确保tmp不是null,并且大小是一个或多个。

答案 1 :(得分:3)

这是ternary conditional expression

expr ? value-if-true : value-if-false

如果expr为真,则评估为value-if-true,否则评估为value-if-valuse

所以,在这种情况下,它相当于:

 if (tmp != null && tmp.size() > 0) {
     rv = tmp.get(0);
 } else {
      rv = null;
 }

答案 2 :(得分:2)

rv = ((tmp != null && tmp.size() > 0) ? tmp.get(0) : null); 

如果内括号内的表达式返回true,则rv将保持值tmp.get(0),否则它将保持值null。

variable = expression ? a : b ;

类似于

if expression == true 
  variable = a;
else 
   variable =b ;

答案 3 :(得分:0)

这称为ternary statement

基本上,

User rv = tmp != null && tmp.size() > 0 ? tmp.get(0) : null;

是一种较短的写作方式:

        User rv;

        if (tmp != null && tmp.size() > 0)
            rv = tmp.get(0);
        else
            rv = null;

三元声明并不快。虽然,在某些情况下,使用它会使您的代码更具可读性。