为什么这个程序不会出现歧义错误

dpa*_*oni 1 java this

我有一个java程序,其中使用了一个参数名称与实例变量相同的参数名称的参数化构造函数.在这种情况下,我们需要使用此关键字.但是,当我不使用此关键字时,它不会给出任何错误,而是使用默认值初始化实例变量.

class Demo{
    int a;
    Demo(int a)
    {
       a = a;
    }

    public static void main(String args[])
    {
        Demo d = new Demo(5);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当执行这个程序时,a的值变为0.怎么样?

use*_*751 7

有没有歧义-中a = a;,双方 a的明确的引用参数,因为那是'最里面的’变量叫a.