循环内的变量声明

Ami*_*mit 8 java

我在整个编程过程中遇到的一个常见困境是在循环中声明变量.说我必须执行以下操作:

List list=myObject.getList();
Iterator itr=list.iterator();
while (itr.hasNext()){
    BusinessObject myBo=(BusinessObject)itr.next();
    process(myBo);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,应该myBo在循环外声明还是在循环内声明它不会对内存和性能造成伤害?

mis*_*tor 8

在循环内声明它不会对内存和性能造成任何损害.


cyb*_*org 5

如果可能的话使用List<BusinessObject>Iterator<BusinessObject>避免铸造:

List<BusinessObject> list = myObject.getList();
Iterator<BusinessObject> itr = list.iterator();

while (itr.hasNext()) {
   process(itr.next());
}
Run Code Online (Sandbox Code Playgroud)

  • 那当然只适用于1.5或更高版本.不是每个人都这么幸运:) (3认同)

Car*_*icz 5

良好软件设计的一个原则是限制局部变量的范围,即在最后一次使用该变量后不久结束的块内及时声明它们.这不会影响性能或其他"硬"方面,但会使程序更易读,更易于分析.

总之,做你正在做的事情被认为是好的.


MAK*_*MAK 4

myBo只是对对象的引用(由 itr.next() 返回)。因此,它需要的内存量非常小,并且只创建一次,并且将其添加到循环中不会影响您的程序。IMO,在使用它的循环内声明它实际上有助于使其更具可读性。