gpt4 book ai didi

java - Java 中使用局部变量隐藏实例变量

转载 作者:行者123 更新时间:2023-12-01 17:11:53 26 4
gpt4 key购买 nike

我读过“如果存在另一个同名且范围更近的变量,则该变量将被隐藏”。我找到了带有构造函数的 Point 类作为示例:

public class Point {
public int x = 0;
public int y = 0;

public Point(int x, int y) {
x = x;
y = y;
}
}

然后我在下面的CreateObjectDemo类中创建了一个Point类的对象并打印变量 x 的值。

public class CreateObjectDemo {
public static void main(String[] args) {

Point originOne = new Point(23, 94);

System.out.println(originOne.x);

}

}

运行编译器后,打印出0。但是为什么不打印出23呢?我认为构造函数中的“x = x”类似于“23 = 23”。我是否误解了影子变量的定义?

最佳答案

I thought that "x = x" in the constructor would be like "23 = 23".

在构造函数中,简单名称x 的含义始终 只是参数。因此,构造函数中的赋值 x = x 会获取 x 参数的值,并将其分配给 x参数也是如此。实例变量永远不会被触及。 (不清楚 23 = 23; 的意思,所以我无法判断这是否准确。)基本上,这是一个空操作,一些 IDE 会给你一个警告它。

要强制它复制到实例变量,您需要:

this.x = x;

(当然,y 也是如此。)

关于java - Java 中使用局部变量隐藏实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432722/

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