my-*_*my- 2 java variables for-loop
在for循环中声明变量的优点和缺点是什么?我想改变我的讲师思想,或改变我的思想:讲师强迫我使用:
// Declare variables
int i;
...
for(i = 0; boolen expesion; update) // Note i not declared here
Run Code Online (Sandbox Code Playgroud)
我喜欢做:
for(int i = 0; boolean expesion; update) // Note i is declared here
Run Code Online (Sandbox Code Playgroud)
在考试中,这是我的方式的惩罚点..我试图通过告诉他说服他:
他的答案是:"如果这里有很少的循环,你不需要反复宣布同一个变量".很难与讲师一起争论那么特别是你是一个来自foreng国家的一年级学生.但是int没有占用那么多内存加上java有一个垃圾收集器来清理内存..
所以,请帮助我说服他或我,并提出一个很好的论据.
他的答案是:"如果这里有很少的循环,你不需要反复宣布同一个变量".很难与讲师一起争论那么特别是你是一个来自foreng国家的一年级学生.但是int没有占用那么多内存加上java有一个垃圾收集器来清理内存..
关于学习如何在学术界编写软件,这是一个丑陋的事实.除非你的部门负责人不仅比大多数讲师更好,而且在保护学生方面坚定不移,否则你只会降低你的成绩.当我在大学时,一位教授因使用"先进技术"而对学生进行评分而闻名.我指的是他讲课前的章节.即使他们能够以绝对的精确度完全表达他们正在做的事情,也证明他们不仅仅是复制和粘贴.
事实是你的教授对于大多数常见的循环是错误的.除非您的代码需要在循环之后引用索引变量,否则最好让变量在范围更改时被删除.对于大多数实际的循环,他的方式不仅没有必要.它甚至不可能,因为今天许多"for"循环实际上是 - 像这样的每个循环
for (String s : someArray) {
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
或(Groovy)
someArray.each { element ->
println element
}
Run Code Online (Sandbox Code Playgroud)
更新:我认为另一件事是教授的论点是非常错误的,除非绝对必要,否则让国家暴露是一种不好的形式.作为一般规则,对于任何语言来说,这都是一个糟糕的想法,尤其是对于垃圾收集语言.由于变量是一个int而不是Integer(堆栈上的原语与堆上的对象,初学者读取它),在这种情况下它不太重要.然而,当处理对象时,应该编写代码,以使GC对于"这个范围已经退出,让我们清理其中的所有内容"这一点非常简单.
随着时间的推移,如果你习惯于保持不必要的状态,你就有可能引入内存泄漏.您的习惯可能会使GC更难以完成其工作以及长时间运行的任务,这可能会导致内存需求增加和不稳定.你不需要以任何方式去功能语言纯粹主义者,但你需要借用它的精神,它将国家视为必要的邪恶,而不是来自天堂的祝福.
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |