功能初始化

时间:2014-06-23 14:25:35

标签: java

是否有必要始终在函数

中初始化结果变量

例如

Public class Calculator

result=addition(a,b);

Public static int addition(int a, int b)
int result;
result =a+b;
return result; 

1 个答案:

答案 0 :(得分:7)

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

public static int addition(int a, int b) {
    return a + b;
}

如果你使用变量,你需要确保它已经明确分配,然后才能从中读取,包括在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
}

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

public static int addition(int a, int b) {
    int result = a + b;
    return result;
}

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

result=addition(a,b);

不清楚该变量的声明位置(这是避免在问题中发布伪代码的一个原因)但它与result中的addition变量完全分开1}},它是 local addition方法。这两个变量碰巧具有相同的名称,但它们之间没有相关性。例如,您可以轻松拥有:

int sum = addition(a, b);

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

System.out.println(addition(a, b));

或者你可以完全忽略它:

addtion(a, b); // Valid, but pointless unless there are side-effects