我有一个应该返回char的方法:
public char Connect(parameters){
for (char c : something){
if (condition){
return c;
}
}
由于我在循环后没有返回,Netbeans添加了
return 0;
在方法结束时。为什么?为什么它不是错误?
答案 0 :(得分:0)
这是因为控制流可能无法到达if块。如果发生这种情况,您的代码不会指定要返回的内容。这就是Netbeans为你添加return 0
的原因。
让我们假设表达式condition
永远不会是真的
public char Connect(parameters){
for (char c : something){
if (condition){
return c;
}
}
程序将完成循环,到达方法结束,但仍然无法返回任何内容。因此,您可以将return 0
视为“默认”返回语句。
答案 1 :(得分:0)
char
类型的默认值为'\u0000'
,其十进制等值为0
。见JLS §4.12.5。因此,如果for
循环中的条件永远不满足,则该方法将返回默认值。
为什么它不是错误?
它不应该是一个错误。从int
到char
类型隐含narrowing conversion。
答案 2 :(得分:0)
想象一下,你的病情永远不会得到满足。在这种情况下,如果您没有return
语句,应该返回什么内容?
在您的情况下,return 0;
是未满足条件时的默认值。
答案 3 :(得分:0)
由于我在循环后没有返回,Netbeans添加了
返回0;
在方法结束时。为什么?为什么它不是错误?
声明具有return
类型的方法无法正常结束。它必须return
传递任何明确条件的值。如果你的for
循环条件是false
(在编译时无法评估),我们不能指望它从循环体返回。
这就是netbean为您设置的原因:0
是char
的默认值,以及char
返回类型的方法的有效返回值。
答案 4 :(得分:0)
Netbeans(可能)将其添加为默认返回值。如果您使用Netbeans自动生成方法,则极有可能。
这不是错误,因为0可以正确转换为字符。请参阅asciitable.com,您会发现字符0是有效字符(NUL)。