【问题标题】:When to declare variables [duplicate]何时声明变量[重复]
【发布时间】:2013-07-15 02:14:36
【问题描述】:

这两种方式有什么区别吗:

public void method() {
    String data;
    Node current = head;

    while(current != null) {
        data = current.getData();
        // Do something with data
        current = current.getNext();
    }
}

还有这个:

public void method() {
    Node current = head;

    while(current != null) {
        String data = current.getData();
        // Do something with data
        current = current.getNext();
     }
}

我以前从未有过教授解释过这一点,我想知道两者之间是否有区别,以及哪个“更好”使用。

【问题讨论】:

    标签: java


    【解决方案1】:

    你在那里的第一个定义将使变量在整个方法中可用,这意味着里面的所有元素都可以访问和修改它的值。第二个定义将此变量的范围限制在循环内部。

    如果您不打算在循环之外使用该变量,那么您不妨在循环内声明它,并将该变量的范围保持在该循环中。虽然在循环之外声明它也可以,但出于您的目的,它并不是特别有用。将其包含在循环中的好处是它只能从内部进行修改,以防止以后对其进行意外更改。

    不过,要回答您的问题,从语法上讲,任何一种方式都是正确的,并且在这种情况下会产生相同的功能结果。

    【讨论】:

    • 你是对的。我把它误读为 JavaScript。我会解决的。
    • 我想知道你是否错过了 Java 标记...+1
    【解决方案2】:

    第一个实例化变量数据,并赋予它范围,以便它可以在 while 循环之外使用。在第二种实现中,数据只能在 while 循环中使用。如果您不打算在 while 循环之外使用数据,建议您在循环中声明它。这将防止在循环之外进行的任何意外修改。

    要了解有关不同范围的更多信息,请访问link

    【讨论】:

    • 但是如果我不在循环之外使用它有区别吗?
    • @user1327636 在第二个示例中,您将无法在循环之外使用data
    • @user1327636 在这种情况下唯一的区别是该方法将在让垃圾收集器处理它们之前将值保留稍长一点的时间
    【解决方案3】:

    当您在循环内声明变量时,您无法在其他任何地方访问它们。如果它们是在循环之外定义的,您可以在适当的范围内使用它们。定义在函数和类中的变量也是如此。这都是适当范围的问题。

    【讨论】:

      【解决方案4】:

      如果您在 while 循环之后有代码,则无法在第二个循环中访问变量 data。因为您在 while 循环块中声明了它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        相关资源
        最近更新 更多