为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
为什么下面的工作正常?
String str;
while (condition) {
str = calculateStr();
.....
}
但是下面这个被认为是危险的/不正确的:
while (condition) {
String str = calculateStr();
.....
}
有必要在循环之外声明变量吗?
当前回答
根据谷歌Android开发指南,变量范围应该是有限的。请查看此链接:
极限变量范围
其他回答
在内部,变量可见的范围越小越好。
这两个例子的结果是一样的。但是,第一个函数为你提供了在while循环之外使用str变量的方法;第二个则不然。
如果你想在循环外使用STR;在外面宣布。否则,第二版就可以了。
在while循环之外声明String str允许它在while循环内外被引用。在while循环中声明String str只允许它在while循环中被引用。
如果你的calculateStr()方法返回null,然后你试图在str上调用一个方法,你有NullPointerException的风险。
更一般地说,避免使用空值变量。顺便说一下,它对类属性更强。