我自己学习Java。我读了这段代码,我需要一个解释。
为什么使用这段代码(从https://www.javatpoint.com/aggregation-in-java复制)this
?
它不等于在方法中使用不同的局部变量名称,如:
public Address(String i, String j, String k)
而只是使用city=i
代替?
这里有使用this.city=city
的原因吗?
感谢。
public class Address {
String city,state,country;
public Address(String city, String state, String country) {
this.city = city;
this.state = state;
this.country = country;
}
}
事实上,我会将代码编写为:
public class Address
{
String city,state,country;
public Address(String tempCity, String tempState, String tempCountry) {
mycity = tempCity;
state = tempState;
country = tempCountry;
}
}
与第一个版本相比,第二个版本有哪些优点和缺点?
答案 0 :(得分:1)
这里有使用this.city = city的原因吗?
在这种情况下,使用this.city = city;
可以防止读者(和编译器)的歧义
另一种选择是city = city;
,但关于设置city
(在这种情况下不会修改类变量)
相关:Answer to When should I use “this” in a class?, case 1
不等于在方法中使用不同的局部变量名称
是的,使用不同的变量名称可能更清晰
(有些人喜欢相同的名字,只是匹配,我更喜欢第一个字母:city = c
)
与第一个版本相比,第二个版本有哪些优点和缺点?
这是一种风格,如果你和别人一起编程,最好有相同的风格
如果您正在为之工作的公司采取一种方式,并且您开始采用不同的方式,那么维护代码库将会困难得多
答案 1 :(得分:1)
至于为什么这实际上很常见:IDE提供自动分配。所以你在Eclipse中所做的就是输入
class Address {
public Address(String city, String state, String country) {}
}
并且Eclipse会警告您方法中未使用参数city
,state
和country
。
所以你可以做的是触发一个自动修复,其中一个是"分配给新的字段"这将在类中创建字段并在构造函数中分配它们。然后,字段名称将与参数相同,因此需要以this.
为前缀,以便它们引用字段,而不是参数。
答案 2 :(得分:0)
请注意,您有city
作为类中的字段,并且它也是函数传递的参数。
为了将传递的参数分配给城市字段,使用了this.city
答案 3 :(得分:0)
他们在这里使用this.city
的原因是,正如您所说,本地参数名city
对于类变量是不明确的。
使用this
访问类变量的另一点是,它可以使代码更具可读性,因为即使您没有看到声明,您也可以立即知道它的类变量。
答案 4 :(得分:-1)
它不等于在方法中使用不同的局部变量名 例如:public Address(String i,String j,String k)并且只是使用 city = i而不是?
是的
但是,在为字段分配参数时,可以更清楚地在参数中使用与字段相同的名称
city
字段代表city
为什么在参数中使用其他名称?
就个人而言,在参数名称中用i
或cityP
表示它会使其不太清楚。
之后,这是一个品味问题。