Java基础知识,用于构造函数

时间:2017-12-13 14:39:46

标签: java constructor this

我自己学习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;
    }
}

与第一个版本相比,第二个版本有哪些优点和缺点?

5 个答案:

答案 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

  

与第一个版本相比,第二个版本有哪些优点和缺点?

这是一种风格,如果你和别人一起编程,最好有相同的风格

如果您正在为之工作的公司采取一种方式,并且您开始采用不同的方式,那么维护代码库将会困难得多

相关:Is Programming Style important? How Important?

答案 1 :(得分:1)

至于为什么这实际上很常见:IDE提供自动分配。所以你在Eclipse中所做的就是输入

class Address {
    public Address(String city, String state, String country) {}
}

并且Eclipse会警告您方法中未使用参数citystatecountry。 所以你可以做的是触发一个自动修复,其中一个是"分配给新的字段"这将在类中创建字段并在构造函数中分配它们。然后,字段名称将与参数相同,因此需要以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 为什么在参数中使用其他名称?
就个人而言,在参数名称中用icityP表示它会使其不太清楚。 之后,这是一个品味问题。