在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'发生的事情?这是某种有条件的吗?
答案 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只是一个构造函数。