我正在自学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;
}
}与第一个版本相比,第二个版本的优缺点是什么?
发布于 2017-12-13 14:43:20
它不等于方法中有不同的局部变量名,例如:公共地址( String,String,String),而只使用city=i吗?
它是。
但是,在参数中使用与在字段中使用相同的名称可能会更清楚,就像将参数分配给字段一样。
city字段表示city。
为什么在参数中使用另一个名称?
就个人而言,用i或cityP在参数名称中表示它就不那么清楚了。之后,这是味觉的问题。
发布于 2017-12-13 14:42:15
在这里使用this.city=city有什么原因吗?
在这种情况下,使用this.city = city;可以防止读取器(和编译器)出现歧义。
另一种选择是city = city;,但是设置哪个city并不明显。
(在本例中不修改类变量)
相关:, case 1
它不等于方法中有不同的局部变量名吗?
是的,使用不同的变量名可能更清晰。
(有些人更喜欢同名,而我更喜欢大写字母:city = c__)
与第一个版本相比,第二个版本的优缺点是什么?
这是一种风格,如果你是在和其他人一起编程,最好有同样的风格
如果你工作的公司只做一种方式,而你开始用另一种方式去做,那么维护代码基就会困难得多。
发布于 2017-12-13 14:46:25
至于为什么这实际上很常见:IDE提供自动赋值。例如,您在Eclipse中所做的是键入
class Address {
public Address(String city, String state, String country) {}
}Eclipse将警告您,方法中不使用参数city、state和country。因此,您可以做的是触发一个自动修复,其中一个是“分配到新字段”,它将在类中创建字段并在构造函数中分配它们。字段名将与参数相同,因此需要以this.作为前缀,以便它们引用字段,而不是参数。
https://stackoverflow.com/questions/47795648
复制相似问题