Java在if语句中声明变量

时间:2014-07-05 02:35:44

标签: java variables if-statement declaration

我有一个同学问我这个问题,我不知道如何回答。

以下代码可以正常使用。

    int x = 40;
    int y = 35;
    if (x > y)
    {
        int ans = x + y;
    }

但是,下面的代码给出了一个错误,指出变量声明不允许存在。为什么不允许那里? NetBeans引发以下异常:无法编译的源代码 - 错误的树类型:

    int x = 40;
    int y = 35;
    if (x > y)
        int ans = x + y;

如果重要的话,我们正在使用NetBeans 8.0 Beta。

2 个答案:

答案 0 :(得分:1)

与工作或不工作的问题不同,这是一个语法错误。 您不能在块之外进行变量声明。

为什么你甚至想要做第二种模式?谁将使用ans

答案 1 :(得分:1)

当您对变量进行范围调整时,它仅在该范围内可用。

if (stuff) {
    int i;
    // i available here
}
// i not available here

第一种类型,编译器不知道您以后是否会使用该变量。它并不认为在该块中创建变量有任何问题。

在第二种类型中,编译器知道只有一个语句,因为您没有创建{}块。您创建的变量肯定不会被使用,因此编译器会提醒您永远不能使用您在那里定义的变量。