java为什么这个程序不给出歧义错误
我有一个java程序,其中使用了参数化构造函数,参数名与实例变量的参数名相同。 在这种情况下,我们需要使用这个关键字。但是当我不使用这个关键字时,它不会给出任何错误,而是用默认值初始化实例变量
class Demo{
int a;
Demo(int a)
{
a = a;
}
public static void main(String args[])
{
Demo d = new Demo(5);
}
}
但当执行该程序时,a的值变为0。怎么做
# 1 楼答案
在代码中覆盖局部变量
a
,而不是将其值赋给类变量。类变量初始化为零做
# 2 楼答案
因为将相同的值赋给相同的变量是完全有效的。所以
a = a
是完全有效的代码但您想要实现的是将
a
(方法变量)的值赋给this.a
(实例变量)。所以您需要使用this
关键字来引用实例变量如果您不想使用
this
关键字,那么您需要像这样重命名方法变量参考:Primitive Data Types
基本数据类型变量使用默认值初始化。对于
int
0是默认值# 3 楼答案
没有歧义-在
a = a;
中,两个a
都明确地引用了参数,因为这是名为a
的“最内部”变量