Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java基础,将其用于构造函数_Java_Constructor_This - Fatal编程技术网

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

Java基础,将其用于构造函数,java,constructor,this,Java,Constructor,This,我正在自学Java。我读了这个代码,我需要一个解释 为什么在这段代码(复制自)中使用了此 这不等于在方法中有不同的局部变量名,例如: 公共广播(字符串i、字符串j、字符串k)而只需使用city=i 在这里使用this.city=city有什么原因吗? 谢谢 事实上,我将代码编写为: public class Address { String city,state,country; public Address(String tempCity, String tempState,

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

为什么在这段代码(复制自)中使用了此

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

公共广播(字符串i、字符串j、字符串k)
而只需使用
city=i

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

事实上,我将代码编写为:

public class Address
{
    String city,state,country;

    public Address(String tempCity, String tempState, String tempCountry) {
        mycity = tempCity;
        state = tempState;
        country = tempCountry;
    }
}
与第一个版本相比,第二个版本的优点和缺点是什么

这里使用这个有什么原因吗。city=city

在这种情况下,使用
this.city=city用于防止读者(和编译器)产生歧义

另一种选择是
city=city,但设置的城市不明显

(在这种情况下,不修改类变量)

相关的:

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

是的,使用不同的变量名可能更简洁

(有些人喜欢相同的名字,我更喜欢第一个字母:
city=c

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

这是一种风格,如果你和其他人一起编程,最好使用相同的风格

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


相关:

请注意,
city
是类中的一个字段,也是函数传递的一个参数。 为了将传递的参数分配给城市字段,使用
this.city

这不等于方法中有不同的局部变量名吗 例如:公共地址(字符串i、字符串j、字符串k)和仅使用 城市=我

是的。
但在为字段分配参数时,在参数中使用与字段中相同的名称可能会更清楚。

城市
字段表示城市

为什么在参数中使用其他名称?
就个人而言,在参数名称中用
i
cityP
表示它会使它不那么清晰。
之后,这是一个品味问题。

他们在这里使用
this.city
的原因是,正如您所说,本地参数名称
city
对于类变量是不明确的


使用
this
访问类变量的另一个要点是,它可以使代码更具可读性,因为即使看不到声明,您也可以立即知道它是类变量。

至于这实际上非常常见的原因:IDE提供了自动赋值。例如,您在Eclipse中所做的是类型

class Address {
    public Address(String city, String state, String country) {}
}
Eclipse将警告您,方法中未使用参数
城市
国家

因此,您可以做的是触发一个自动修复,其中一个是“分配给新字段”,它将在类中创建字段并在构造函数中分配它们。然后字段名称将与参数相同,因此需要加前缀
this.
以便它们引用字段,而不是参数。

实际上,
city
i
并不干净,但
city=cityName
isI可疑
i
j
,而
k
只是它可以是任何东西的例子,如果它们被实际使用,那么它将很难遵循(比
c
cityName
)“替代方案是
city=city;
,但不清楚设置的是哪个城市”-这不是替代方案,这是完全错误的。@Tom选择使用
这个。
虽然仍将两个变量保留为
city
,但它并没有保留相同的功能,但很多人尝试使用它,结果却出乎意料。从直觉上看,设置的城市不明显,也不会抛出错误OK,编辑清楚了您的意思。首先,您似乎建议将其作为一个可行的替代方案(这可能不太容易理解)。它不是关于使用“this”,因此不是重复,而是当您有替代方案时,更多的最佳实践。我个人认为没有理由在这里使用“this”和重复的变量名。我认为这个问题的一半或三分之一与其中一个答案的一小部分重叠。这不是一个明确的1比1的重复问题,如果一个问题确实是重复的或离题的,仍然需要密切关注选民。只要这个问题是开放的,如果你个人不认为它是重复的或离题的,或者任何这些,那么你应该回答这个问题。在许多情况下,只有一些人认为它是重复的/OT(不足以结束),在这种情况下,欢迎回答。虽然我不喜欢对坏问题的好答案投否决票,但你当然应该等到最后的结果被接受。
class Address {
    public Address(String city, String state, String country) {}
}