为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
当前回答
如果你想在循环外使用STR;在外面宣布。否则,第二版就可以了。
其他回答
正如很多人指出的那样,
String str;
while(condition){
str = calculateStr();
.....
}
没有比这更好的了:
while(condition){
String str = calculateStr();
.....
}
因此,如果你不重用变量,就不要在变量作用域之外声明变量。
如果你不需要在while循环之后使用str(范围相关),那么第二个条件,即。
while(condition){
String str = calculateStr();
.....
}
如果你只在条件为真时才在堆栈上定义一个对象,那就更好了。也就是说,如果你需要,就使用它
我认为物体的大小也很重要。 在我的一个项目中,我们声明并初始化了一个大型二维数组,该数组使应用程序抛出内存不足异常。 我们将声明移出循环,并在每次迭代开始时清除数组。
在while循环之外声明String str允许它在while循环内外被引用。在while循环中声明String str只允许它在while循环中被引用。
根据谷歌Android开发指南,变量范围应该是有限的。请查看此链接:
极限变量范围