这两种方式之间的差异是否存在差异:
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();
}
}
我以前从来没有教授解释过这个问题,并且想知道两者之间是否存在差异以及哪一个“更好”使用。
答案 0 :(得分:6)
您在那里的第一个定义将使变量在整个方法中可用,这意味着内部的所有元素都将能够访问和修改其值。第二个定义将此变量的范围限制在循环内部。
如果你不打算在循环之外使用变量,那么你也可以在循环中声明它并将该变量的范围保持在该循环中。虽然在循环之外声明它也会起作用,但对于你的目的,它不会特别有用。将它包含在循环中的好处是它只能从内部进行修改,以防止以后对其进行意外更改。
要回答你的问题,从语法上讲,两种方式都是正确的,并且在这种情况下会产生相同的功能结果。
答案 1 :(得分:3)
第一个实例化变量数据,并给它范围,以便它可以在while循环之外使用。在第二种实现中,数据只能在while循环中使用。如果您不打算在while循环之外使用数据,建议您在循环中声明它。这样可以防止在循环外进行的任何意外修改。
要详细了解不同的范围,请访问此link
答案 2 :(得分:0)
当您在循环内声明变量时,您无法在其他任何位置访问它们。如果它们是在循环外定义的,则可以在适当的范围内使用它们。对于函数和类中定义的变量也是如此。这都是适当范围的问题。
答案 3 :(得分:0)
如果在循环后有代码,则无法在第二个中访问变量数据。因为你在while循环块中声明它。