1

在 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);
}

是什么 '?' 正在做?当我们讨论这个主题时,任何人都可以解释 return 语句中那个“新字符串”发生了什么吗?这是某种条件吗?

4

6 回答 6

5

它是一个三元运算符,相当于:

if((beginIndex == 0) && (endIndex == count)) {
  return this;
} else { 
  return new String (offset + beginIndex, endIndex - beginIndex, value);
}
于 2012-07-25T19:38:54.210 回答
4

这是一个三元运算符。

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

把它想象成:

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

对于 return 语句,它变为:

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

于 2012-07-25T19:42:09.330 回答
2
return boolValue ? a : b;

a如果boolValue为真则返回,b否则返回。它是 的缩写形式if else

于 2012-07-25T19:39:18.983 回答
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);
于 2012-07-25T19:39:38.950 回答
1

?:is三元运算符:a ? b : c等价于:

if (a) then b; else c;

任何人都可以解释返回语句中的“新字符串”发生了什么

三元运算符是此return语句中的条件,但new String不是一种条件,它只是构造一个新的String:根据条件,此return语句返回:

  • this, 或者
  • 一个新String对象
于 2012-07-25T19:41:57.453 回答
0

它是一个三元运算符,用于许多编程语言,而不仅仅是 Java。将所有内容放在一行中非常有用,基本上它等于:

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

New String 只是一个构造函数。

于 2012-07-25T19:41:20.983 回答