【发布时间】:2021-06-28 20:42:32
【问题描述】:
这两种方法是否等效?第一个是在我正在学习的互联网课程中提供的,第二个是我自己提出的。他们似乎都在工作并给我相同的结果,但我是 Java 新手,可能不知道我在做什么。我的和第一个一样好吗?我不确定为什么在这种特殊情况下根本需要“this”,但我对以下行以及为什么有必要感到最困惑:
Contact contact = this.myContacts.get(i);
private int findContact(String contactName){
for(int i = 0; i < this.myContacts.size(); i++){
Contact contact = this.myContacts.get(i);
if(contact.getName().equals(contactName)){
return i;
}
}
return -1;
}
private int findContact(String contactName){
for(int i = 0; i < myContacts.size(); i++){
if(myContacts.get(i).getName().equals(contactName)){
return i;
}
}
return -1;
}
【问题讨论】:
-
它们是完全相同的代码。唯一的区别是,第一次你将
myContacts.get(i)存储到一个变量中,而第二次你没有。 -
如果编译器没有优化该变量并生成完全相同的代码,我会感到惊讶。
-
直接变量
contact不是必需的。但是,他们的作者可能添加了它以使其更具可读性。然而,这是主观的。