返回char的方法返回0

时间:2013-11-20 18:35:45

标签: java

我有一个应该返回char的方法:

public char Connect(parameters){
    for (char c : something){
        if (condition){
            return c;
        }
    }

由于我在循环后没有返回,Netbeans添加了

return 0;

在方法结束时。为什么?为什么它不是错误?

5 个答案:

答案 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循环中的条件永远不满足,则该方法将返回默认值。

  

为什么它不是错误?

它不应该是一个错误。从intchar类型隐含narrowing conversion

答案 2 :(得分:0)

想象一下,你的病情永远不会得到满足。在这种情况下,如果您没有return语句,应该返回什么内容?

在您的情况下,return 0;是未满足条件时的默认值。

答案 3 :(得分:0)

  

由于我在循环后没有返回,Netbeans添加了

     

返回0;

     

在方法结束时。为什么?为什么它不是错误?

声明具有return类型的方法无法正常结束。它必须return传递任何明确条件的值。如果你的for循环条件是false(在编译时无法评估),我们不能指望它从循环体返回。

这就是netbean为您设置的原因:0char的默认值,以及char返回类型的方法的有效返回值。

答案 4 :(得分:0)

Netbeans(可能)将其添加为默认返回值。如果您使用Netbeans自动生成方法,则极有可能。

这不是错误,因为0可以正确转换为字符。请参阅asciitable.com,您会发现字符0是有效字符(NUL)。