功能初始化

use*_*672 -6 java

是否有必要始终初始化函数中的结果变量

例如

Public class Calculator

result=addition(a,b);

Public static int addition(int a, int b)
int result;
result =a+b;
return result; 
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

您根本不需要结果变量.您需要确保执行可以到达函数末尾的每种可能方式(不仅仅抛出异常)意味着您获得一个return语句,并且每个return语句都有一个适当的express来评估,但这并不意味着你需要一个单独的变量.你的例子可以写成:

public static int addition(int a, int b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

如果你确实使用了一个变量,你需要确保它在你可以读取之前已经明确分配,包括在一个return声明中.例如,这不起作用,因为result尚未明确分配:

public static int addition(int a, int b) {
    int result;
    if (a < b) {
        result = a + b;
    }
    return result; // Invalid! result may not have a value
}
Run Code Online (Sandbox Code Playgroud)

在可能的情况下,在声明点初始化变量通常是个好主意.因此,如果我正在编写此代码并想要一个result变量,我会:

public static int addition(int a, int b) {
    int result = a + b;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

现在,再次查看示例代码,调用方法时会使用另一个变量:

result=addition(a,b);
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚其中变量则声明(这是一个原因,以避免刚刚发布的问题,伪代码),但它是一个从完全独立result的变量addition,这是当地的addition方法.这两个变量碰巧具有相同的名称,但它们在其他方面是不相关的.例如,您可以轻松拥有:

int sum = addition(a, b);
Run Code Online (Sandbox Code Playgroud)

或者使用结果调用另一个方法,而不是将其分配给变量:

System.out.println(addition(a, b));
Run Code Online (Sandbox Code Playgroud)

或者你可以完全忽略它:

addtion(a, b); // Valid, but pointless unless there are side-effects
Run Code Online (Sandbox Code Playgroud)