我最近为一项作业编写了一个类,在该类中我必须将名称存储在 ArrayList 中(在 Java 中)。我将 ArrayList 初始化为实例变量 private ArrayList<String> names
.后来当我根据解决方案检查我的工作时,我注意到他们已经在 run()
中初始化了 ArrayList。方法代替。
我考虑了一下,觉得这可能是一种品味问题,但一般来说,在这种情况下人们会如何选择呢?是占用内存少还是什么?
PS 我喜欢 Ruby 中以 @ 符号开头的实例变量:它们更可爱。
(元问题:这个问题的标题是什么更好?)
最佳答案
用伟大的 Knuth 的话来说“过早的优化是万恶之源”。
只需担心您的程序运行正常并且没有错误。这比以后难以调试的模糊优化重要得多。
但要回答你的问题——如果你在类成员中初始化,内存将在代码中第一次提到你的类时分配(即当你从它调用一个方法时)。如果您在方法中进行初始化,则内存分配会在稍后调用此特定方法时发生。
所以就只是后面初始化的问题了。。。业界称之为lazy initialization。
关于java - 选择何时实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292363/