gpt4 book ai didi

java - 初始化值到构造函数

转载 作者:行者123 更新时间:2023-12-01 17:59:18 24 4
gpt4 key购买 nike

在下面的代码中,我声明了 2 个用户定义的构造函数,一个没有参数,另一个有 3 个参数,在这两个构造函数中,我都为实例变量赋值,并且当执行 main 方法时,构造函数的输出没有在第一种方式中,参数为 2,具有 3 个参数的构造函数的 o/p 为 0,但是当我尝试第二种方式时,零参数构造函数的 o/p 为 2,对于 3 个参数构造函数的 o/p 为 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;
}
}

主要方法如下:

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);
}
}

最佳答案

当您使用x=20时,您正在为传递给构造函数的参数x分配一个新值,而不是将该值分配给实例成员。当您编写 this.x 时,它显然绑定(bind)到实例成员。

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

关于java - 初始化值到构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com