在Java中,访问类内实例变量的最佳方式是什么?
我刚刚开始学习Java,它很棒。我需要了解的一点是,在类中,我们可以通过两种方式访问实例变量:在Java中,访问类内实例变量的最佳方式是什么?,java,oop,this,instance-variables,Java,Oop,This,Instance Variables,我刚刚开始学习Java,它很棒。我需要了解的一点是,在类中,我们可以通过两种方式访问实例变量: class Box { // Instance variables private int width; private int height; private int depth; // First way public void set_volume(int a, int b, int c) { this.width = a;
class Box {
// Instance variables
private int width;
private int height;
private int depth;
// First way
public void set_volume(int a, int b, int c) {
this.width = a;
this.height = b;
this.depth = c;
}
// Second way
public void set_volume_v2(int a, int b, int c) {
width = a;
height = b;
depth = c;
}
}
在这里,实例变量无需
此
关键字即可访问。那最好的办法是什么呢?或者它们之间有什么区别?使用此
将允许您确保引用的是实例变量而不是参数,如果它们共享相同的名称
这通常被认为是实例方法和构造函数的最佳实践
否则,您的两种方法是等效的 使用
此
将允许您确保引用的是实例变量而不是参数,如果它们共享相同的名称
这通常被认为是实例方法和构造函数的最佳实践
否则,您的两种方法是等效的 实例变量应使用
此
关键字进行访问,它消除了本地可验证文件同名的混淆。这将忽略以下类型的问题-
public void set_volume_v2(int width, int height, int depth) {
width = width;
height = height;
depth = depth;
}
此处将使用本地veriable以获得更多偏好
public void set_volume_v2(int width, int height, int depth) {
this.width = width;
this.height = height;
this.depth = depth;
}
并且this.width确保是实例变量,width是局部变量。实例变量应该使用
这个关键字访问,它消除了局部变量同名的混淆。这将忽略以下类型的问题-
public void set_volume_v2(int width, int height, int depth) {
width = width;
height = height;
depth = depth;
}
此处将使用本地veriable以获得更多偏好
public void set_volume_v2(int width, int height, int depth) {
this.width = width;
this.height = height;
this.depth = depth;
}
而this.width确保是实例变量,width是局部变量。最好的方法是始终使用this
this.width = a;
这样我们就不会混淆参数名和实例变量
一个容易混淆的小例子是
public void set_volume_v2(int width) {
width = width;
}
因此,当您编写this.width
时,我们要明确它是实例变量 最好的方法是始终使用此
this.width = a;
这样我们就不会混淆参数名和实例变量
一个容易混淆的小例子是
public void set_volume_v2(int width) {
width = width;
}
因此,当您编写this.width
时,我们要明确它是实例变量 两个都可以。当字段名被参数隐藏时,通常使用this
关键字。在您的情况下,两者都是相同的,因为在解析局部变量和实例变量时,不会因为它们的名称不同而产生歧义!有时最好在一个冗长的方法中使用这个
,以便更清楚地识别实例变量和局部变量。在发布前搜索:,@Shiva这3个链接不回答它。顺便说一句,这是一个很好的尝试。我得到的三个答案都是相同的,他们没有意见不同。所以,这个问题在我看来绝对不是一个基于观点的问题。两者都可以。当字段名被参数隐藏时,通常使用this
关键字。在您的情况下,两者都是相同的,因为在解析局部变量和实例变量时,不会因为它们的名称不同而产生歧义!有时最好在一个冗长的方法中使用这个
,以便更清楚地识别实例变量和局部变量。在发布前搜索:,@Shiva这3个链接不回答它。顺便说一句,这是一个很好的尝试。我得到的三个答案都是相同的,他们没有意见不同。因此,在我看来,这个问题绝不是一个基于意见的问题。在特定情况下,您只需要this
关键字。引用一个字段而不引用它是完全正确的。@Bart这就是原因。我们应该习惯于使用this
,因此您不需要记住任何情况:)您只需要在特定情况下使用this
关键字。引用一个字段而不引用它是完全正确的。@Bart这就是原因。我们应该习惯于使用这个
,所以你不需要记住任何情况:)@downvoter你能评论一下我的错误吗?这就是为什么所有参数都应该是最终的。如果width参数是final,则示例将出现编译错误。不是downvoter顺便说一句@downvoter你能评论一下我的错误吗?这就是为什么所有参数都应该是最终的。如果width参数是final,则示例将出现编译错误。顺便说一句,不是唐宁街。