用于 ?作为回报

时间:2012-07-25 19:37:21

标签: java return

在Java的String.class中,我看到了这个

public String substring(int beginIndex, int endIndex){
   //if statements
   return ((beginIndex == 0) && (endIndex == count)) ? this:
     new String (offset + beginIndex, endIndex - beginIndex, value);
}

什么是'?'在做什么?当我们讨论这个主题时,是否有人可以解释在返回语句中使用'new String'发生的事情?这是某种有条件的吗?

6 个答案:

答案 0 :(得分:5)

这是ternary operator,相当于:

if((beginIndex == 0) && (endIndex == count)) {
  return this;
} else { 
  return new String (offset + beginIndex, endIndex - beginIndex, value);
}

答案 1 :(得分:4)

这是一个三元运营商。

Cake mysteryCake = isChocolate() ? new Cake("Yummy Cake") : new Cake("Gross Cake"); 

将其视为:

如果此条件为真,则指定第一个值,否则指定第二个值。

对于return语句,它变为:

如果此条件为真,则返回第一个,否则返回第二个。

答案 2 :(得分:2)

return boolValue ? a : b;
如果a为真,

将返回boolValue,否则将返回b。它是if else的简短形式。

答案 3 :(得分:1)

return ((beginIndex == 0) && (endIndex == count)) ? this:
 new String (offset + beginIndex, endIndex - beginIndex, value);

是相同的:

if ((beginIndex == 0) && (endIndex == count)) 
    return this;
else 
    return new String (offset + beginIndex, endIndex - beginIndex, value);

答案 4 :(得分:1)

?:三元运算符a ? b : c相当于:

if (a) then b; else c;
  

任何人都可以解释在返回语句中使用'new String'发生的事情

三元运算符是此return语句中的条件运算符,但new String不是有条件的,它只是构造一个新的String:取决于条件,这个{{ 1}}语句返回:

  • return
  • 新的this对象

答案 5 :(得分:0)

它是Ternary Operator,在许多编程语言中使用,而不仅仅是Java。将所有内容放在一行中基本上等于它是非常有用的:

if (endIndex == count && beginIndex == 0)
{
    return this;
}
else
{
   return new String (offset + beginIndex, endIndex - beginIndex, value);
}

New String只是一个构造函数。