为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
当前回答
这个问题的一个解决方案是提供一个变量作用域来封装while循环:
{
// all tmp loop variables here ....
// ....
String str;
while(condition){
str = calculateStr();
.....
}
}
当外部作用域结束时,它们将自动取消引用。
其他回答
实际上,上面提到的问题是一个编程问题。你想如何编写代码?在哪里需要访问“STR”?声明一个局部用作全局变量的变量是没有用的。我相信这是编程基础知识。
在内部,变量可见的范围越小越好。
如果你想在循环外使用STR;在外面宣布。否则,第二版就可以了。
变量的声明应该尽可能靠近使用它们的地方。
它使RAII(资源获取初始化)更容易。
它使变量的范围保持紧凑。这让优化器工作得更好。
在while循环之外声明String str允许它在while循环内外被引用。在while循环中声明String str只允许它在while循环中被引用。