为了账号安全,请及时绑定邮箱和手机立即绑定

这两种代码哪种更好?

这两种代码哪种更好?

慕慕森 2018-12-07 04:31:35
在用到循环的时候时常会出现这两代码。 第一种在 循环里面定义变量 如果 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 只被声明一次。 这两种代码中感觉上是第二种更好。但原因为是什么? 不明白。 不停的在 循环中声名变量有什么坏处?
查看完整描述

12 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-01-21
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

同意一楼的观点,基本上已经回答了楼主的问题了
查看完整回答
反对 回复 2019-01-21
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

@贪心狸猫:for循环结束j不会被销毁
查看完整回答
反对 回复 2019-01-21
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-01-21
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

第二种好。

第一种情况是:变量会不断地被声明,分配空间,销毁空间。

第二种情况是:变量只声明一次,但是生命周期很长,只有在变量声明部分的“}”之后才会自动被释放。可以优化的是,在循环结束后,手动销毁这个变量。

但是第二种方法消耗的内存和CPU时间会少些。

查看完整回答
反对 回复 2019-01-21
?
不负相思意

TA贡献1777条经验 获得超10个赞

你说的是C#的话,没有区别,会被编译优化

你说的是JS的话,恐怕在外部声明比较好

查看完整回答
反对 回复 2019-01-21
?
喵喔喔

TA贡献1735条经验 获得超5个赞

第二种方式更好!

第一种方式,变量 j 会循环声明 100 次,分配内存空间,然后再销毁,浪费资源。

第二种方式,变量 j 仅声明一次,循环结束后就会释放。

查看完整回答
反对 回复 2019-01-21
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

同一楼观点,不过对于现在的服务器来说,这点区别CPU还是可以承担的,并且还是C#写的。

查看完整回答
反对 回复 2019-01-21
  • 12 回答
  • 0 关注
  • 382 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信