将值初始化为构造函数

0 java variables constructor instance

在下面的代码中,我已经声明了2个用户定义的构造函数,一个没有参数,另一个带有3个参数,在构造函数中我将值赋给实例变量,当执行main方法时,不带参数的构造函数的输出是2并且具有3个参数的构造函数的o/p在第一种方式中为0,但是当我尝试第二种方式时,零参数构造函数的o/p为2,而对于3参数,构造函数为15,其中我传递参数而对象创建,现在我不明白为什么在第一种方式输出为零.

public class Main {

    int x, y, z;

    Main() {
        x = 2;
        y = 2;
        z = 2;
    }

    // first way
    Main(int x, int y , int z) {
        x = 20;
        y = 20;
        z = 10;
    }

    // second way
    Main(int x, int y , int z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public int sub() {
        int m;
        m = x + y - z;
        System.out.println("the value is " + m);
        return m;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是主要方法:

package demo;

public class Maintest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main s = new Main();
        int s1 = s.sub();
        Main s3 = new Main(10,10,5);
        int s2 = s3.sub();
        System.out.println(s1);
        System.out.println(s2);
    }
}
Run Code Online (Sandbox Code Playgroud)

Sur*_*tta 5

使用时,您x=20将为x传递给构造函数的参数分配新值,而不是将该值分配给实例成员.当你写的时候this.x,它明显地绑定到实例成员.

如果您仍然对它们感到困惑,请将参数名称更改为其他名称并进行检查.