0

这两种方式之间发生的事情是否有区别:

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();
     }
}

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

4

4 回答 4

6

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

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

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

于 2013-07-16T18:35:44.383 回答
3

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

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

于 2013-07-16T18:31:56.860 回答
0

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

于 2013-07-16T18:33:14.873 回答
0

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

于 2013-07-16T18:34:54.563 回答