
譬如
Integer i = cal(x,y); for(...){ int k = i*j; .... } 还是 for(...){ Integer i = cal(x,y); int k = i*j; .... } i 仅仅在 for 内使用
1 nybux 2017-06-21 12:14:42 +08:00 要看你的 x,y 会不会随着循环发生变化。如果会变,那必须要放里面。 如果不会的话,而且循环次数很多,那放外面可以提高性能。 如果循环次数不多,cal 计算也很简单,那就看可读性了 |
2 rrfeng 2017-06-21 12:21:28 +08:00 这就体现出 for 的初始化语句的作用了啊。 for (Interger i = cal(x, y); i<=10; i++) { ... } |
3 vvchen 2017-06-21 15:06:04 +08:00 你能这么问,代表每次迭代 i 的值都固定。既然 i 值固定,为何还要在循环里每次重复计算?很明显放在外面更好,计算一次就可以。 |
4 esolve OP @nybux stackoverflow 上说定义 The scope of local variables should always be the smallest possible 说编译器会优化 不过对于赋值的话可能不成立? |
5 msg7086 2017-06-22 05:54:20 +08:00 @esolve Smallest possible,在这里应该就是 for 循环的初始化区了,可以把变量限制在 for 块中,而且不会重复计算。 |
7 msg7086 2017-07-02 17:06:33 +08:00 如果固定,那也可以放在 for 的初始化区。要看你用的语言( Java ?)是否支持,支持就尽管放就好了。 虽然我觉得吧,只是一个循环而已,编译器应该是足够聪明去优化的,放在循环外面也可以的。 |