论述题
5. 下面代码是否可以进行优化?如果可以,怎么进行优化?
for(int i=0;i<1000;i++){
Object object=new Object();
System.out.println("object name is"+object);
}
【正确答案】可以进行优化,优化后的代码为:
Object object;
for(int i=0;i<1000;i++)
{
object=new Object();
System.out.println("object name is" +object);
}
题目中的写法,object的作用范围为for循环内部,每当执行一次循环的时候,就需要在栈中分配一个存储空间给object使用,这次循环结束后,object的作用域就结束了,就需要回收object占用的栈空间。本题中,由于循环次数为1000次,所以,需要分配1000次存储空间,同时回收1000次存储空间,开销是非常大的。
如果改用上述写法后,object在整个for循环执行的过程中都是可见的。因此,就不需要不断地在栈中给object申请与释放空间,显然,此种方法具有更高的效率。
【答案解析】