gpt4 book ai didi

java - Java 中的变量作用域

转载 作者:行者123 更新时间:2023-11-29 08:11:29 29 4
gpt4 key购买 nike

class Grade {
public static int f = 2;

public static void main(String[] args) {
for (int f = 0; f < 2; f++) {
System.out.println(f);
}
}
}

“int f”如何覆盖静态变量 f?我认为 static int f 是整个类共享的,为什么编译器不给出这个变量被重新定义的错误信息?为什么它不成为静态 f 的副本?我认为在 Java 中,作用域 block 会继承其父 block 的变量。

最佳答案

这是因为局部f“遮蔽”了外部作用域f。这意味着无论何时在本地定义后引用 f,它都会引用本地版本。

维基百科关于变量阴影的页面在 Java 中使用了一个非常相似的例子:

http://en.wikipedia.org/wiki/Variable_shadowing

编辑:如果您需要“外部”f,您可以通过更恰当的名称访问它:Grade.f。没有静态变量的类似例子:

public class Grade {
public int f=0;
public void setF(int f) {
this.f = f; // setF(5) will set the “outer” f to 5.
}
}

关于java - Java 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941611/

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