这两种代码哪种更好?

在用到循环的时候时常会出现这两代码。

第一种在 循环里面定义变量

如果

for(int i=0;i<100;i++)

{

  int j=i+10;

      ..................

}

 

另外一种是

int j=0;

for(int i=0;i<100;i++)

{

   j=i+10;

      .........................

}

这两种代码中,第一种 j 是在循环中不停的被声明。 第二种方法中 j 只被声明一次。

这两种代码中感觉上是第二种更好。但原因为是什么? 不明白。 不停的在 循环中声名变量有什么坏处?

慕慕森
浏览 383回答 12
12回答

哔哔one

第一种看起来不乱,避免在其他地方被调用而修改内容,而且在for循环结束时j就会被销毁,而第二种方法要等到整个方法结束时才被销毁,这样就节省了内存。另外,不管在哪里声明字段,第一次编译的时候都会先把所有的字段声明存放在程序的开头。

拉风的咖菲猫

同意一楼的观点,基本上已经回答了楼主的问题了

慕桂英4014372

@贪心狸猫:for循环结束j不会被销毁

一只萌萌小番薯

刚认真看了一下,功能不确定,没有可比性,并且值类型和引用类型效果是不一样的。

元芳怎么了

第二种好。 第一种情况是:变量会不断地被声明,分配空间,销毁空间。 第二种情况是:变量只声明一次,但是生命周期很长,只有在变量声明部分的“}”之后才会自动被释放。可以优化的是,在循环结束后,手动销毁这个变量。 但是第二种方法消耗的内存和CPU时间会少些。

不负相思意

你说的是C#的话,没有区别,会被编译优化 你说的是JS的话,恐怕在外部声明比较好

喵喔喔

第二种方式更好! 第一种方式,变量 j 会循环声明 100 次,分配内存空间,然后再销毁,浪费资源。 第二种方式,变量 j 仅声明一次,循环结束后就会释放。

收到一只叮咚

同一楼观点,不过对于现在的服务器来说,这点区别CPU还是可以承担的,并且还是C#写的。
打开App,查看更多内容
随时随地看视频慕课网APP