【发布时间】:2015-01-04 00:51:05
【问题描述】:
假设我有一个方法我调用了多次(比如说每次应用程序运行 10 个平均数)。
我遍历一个列表,找到一个具有正确 ID 的元素,然后将该元素作为参数传递给另一个方法。
这个引用是我每次用新元素更新的类的字段(成员),还是我只是创建一个新的临时引用,这有什么区别吗?下面的代码示例
for (element e : list) {
if (e.getID() == searchID) {
//reassigning value of the reference in the class
mElementToRemove = e;
break;
}
}
list.remove(mElementToRemove);
VS.
for (element e : list) {
if (e.getID() == searchID) {
//(new reference)
Element mElementToRemove = e;
break;
}
}
list.remove(mElementToRemove);
也许在哪种风格更好或哪种性能更好方面没有区别?
谢谢!
*编辑。我打错了底部的例子。对于完整的上下文,我的意思是:
private void removeThisId(int searchID) {
Element ElementToRemove = e;
for (element e : list) {
if (e.getID() == searchID) {
//(new reference)
mElementToRemove = e;
break;
}
}
list.remove(mElementToRemove);
}
【问题讨论】:
-
(new reference)是什么意思 - 这只是评论吗?引用是指局部变量? -
本意是评论,打字太快了,抱歉。是的,我想这将是一个局部变量,但它不是原始变量,它是对列表中对象的引用。
-
当您可以同时使用两者时,请始终选择局部变量而不是字段。它们更快、更容易推理并且不太可能导致错误。您使用字段的方法具有竞争条件、内存泄漏并且不可重入。使用局部变量可以避免所有这些,而不会增加成本。
-
第一个和第三个的代码是相同除了你的评论...而第二个不起作用...
标签: java performance object reference coding-style