首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java基础,将其用于构造函数

Java基础,将其用于构造函数
EN

Stack Overflow用户
提问于 2017-12-13 14:39:45
回答 5查看 97关注 0票数 0

我正在自学Java。我读了这段代码,我需要一个解释。

为什么在这段代码中(从https://www.javatpoint.com/aggregation-in-java复制)使用了this

它不等于在方法中有不同的局部变量名,例如:

public Address(String i, String j, String k)而只使用city=i吗?

在这里使用this.city=city有什么原因吗?谢谢。

代码语言:javascript
复制
public class Address {
    String city,state,country;

    public Address(String city, String state, String country) {
        this.city = city;
        this.state = state;
        this.country = country;
    }
}

实际上,我会将代码编写为:

代码语言:javascript
复制
public class Address
{
    String city,state,country;

    public Address(String tempCity, String tempState, String tempCountry) {
        mycity = tempCity;
        state = tempState;
        country = tempCountry;
    }
}

与第一个版本相比,第二个版本的优缺点是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-12-13 14:43:20

它不等于方法中有不同的局部变量名,例如:公共地址( String,String,String),而只使用city=i吗?

它是。

但是,在参数中使用与在字段中使用相同的名称可能会更清楚,就像将参数分配给字段一样。

city字段表示city

为什么在参数中使用另一个名称?

就个人而言,用icityP在参数名称中表示它就不那么清楚了。之后,这是味觉的问题。

票数 -1
EN

Stack Overflow用户

发布于 2017-12-13 14:42:15

在这里使用this.city=city有什么原因吗?

在这种情况下,使用this.city = city;可以防止读取器(和编译器)出现歧义。

另一种选择是city = city;,但是设置哪个city并不明显。

(在本例中不修改类变量)

相关:, case 1

它不等于方法中有不同的局部变量名吗?

是的,使用不同的变量名可能更清晰。

(有些人更喜欢同名,而我更喜欢大写字母:city = c__)

与第一个版本相比,第二个版本的优缺点是什么?

这是一种风格,如果你是在和其他人一起编程,最好有同样的风格

如果你工作的公司只做一种方式,而你开始用另一种方式去做,那么维护代码基就会困难得多。

相关:Is Programming Style important? How Important?

票数 1
EN

Stack Overflow用户

发布于 2017-12-13 14:46:25

至于为什么这实际上很常见:IDE提供自动赋值。例如,您在Eclipse中所做的是键入

代码语言:javascript
复制
class Address {
    public Address(String city, String state, String country) {}
}

Eclipse将警告您,方法中不使用参数citystatecountry。因此,您可以做的是触发一个自动修复,其中一个是“分配到新字段”,它将在类中创建字段并在构造函数中分配它们。字段名将与参数相同,因此需要以this.作为前缀,以便它们引用字段,而不是参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47795648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档