2013-04-23 22 views
1

我有Item item;其中有getName()getter。我需要在某个循环中访问item.getName()。每次在循环中调用item.getName()是更好的方法,还是将它保存在其他变量中,并使用该变量并有区别?将getter值保存在变量中而不是多次调用会更好吗?

例如: Item item;

String itemName=item.getName(); 

for(int i=0; i< itemArray.size();i++){ 

    itemArray.get(i).setName(itemName); 
} 

for(int i=0; i< itemArray.size();i++){ 

    itemArray.get(i).setName(item.getName()); 
} 
+0

我没有与价值变动的任何probles,那不是我的问题。 – Vahan 2013-04-23 11:27:57

+0

这个新编辑的代码会将您数组中的所有项目设置为相同的名称。如果这是你想要的,最好使用一个变量并且一次调用'getName()',而不是每次迭代调用'getName()'。虽然这样的微调并不是那种从用户的角度来看是不明显的 – 2013-04-23 11:37:55

+0

这不是我所需要的,而是一些这样的例子。我知道这并不明显。但是,哪种风格更好,因为添加变量也有其缺点。 – Vahan 2013-04-23 11:43:35

回答

1

当您使用item.getName(),您将得到总是当前新值。在迭代时将其保存到其他变量中可能不会看到更改。如果这是你的意图它确定并宣布它为最终的,因为它将是线程安全的。 否则我不认为这将是一个很大的性能问题。继续使用吸气剂。

2

如果你要在你的循环再次重新分配item一遍又一遍,然后你需要使用item.getName(),其他你能值只存储在一个局部变量,并在循环中使用它。如果你不会改变它的价值,那么你也可以让它变成final

E.g:

final String name = item.getName(); 
while(comdition){ // some loop 
    // something involving name. But not modifying it. 
} 
0

你会喜欢哪一个?

String itemName; 

for(int i=0;i<itemArray.size();i++){ 
    itemName=itemArray.get(i).getName(); 
    System.out.println(itemName); 
} 

for(int i=0;i<itemArray.size();i++){ 
    System.out.println(itemArray.get(i).getName); 
} 
+0

好吧,我看不出为什么第一个例子会更好。第二个例子是更好的可读性和性能(虽然它不会有任何明显的性能差异) – 2013-04-23 11:32:47

+0

看我的编辑,你错了解我的问题 – Vahan 2013-04-23 11:37:00

相关问题