java - 静态变量和非静态变量可以同名

标签 java variables static

我有一个类,因为我需要两个变量,一个是静态变量,另一个是非静态变量。我的问题是当我们声明两个变量时,我们可以用相同的名称声明它们吗?

为什么我问这个问题是静态变量和非静态变量存储在两个不同的区域(静态变量在方法区和非静态(实例)变量在堆区)。 那么,如果我用相同的名称声明它们会怎样?如果错了,原因是什么?

最佳答案

不,您不能执行以下操作:

public class X{
    int a;
    static int a = 10; //Illegal
    public X(int a){
        this.a = a;
    }
}

原因是两个 a 都在 x 实例的范围内。对于:

X x = new X(5); 
x.a; //were the static field with name a legal, this refers to both 5 and 10.

尚不清楚引用的是哪个版本的a。因此,为了防止混淆,这是非法的。

关于java - 静态变量和非静态变量可以同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222844/

相关文章:

java - GWT 应用程序 : server-wide context, 在哪里运行初始请求并保留其结果,以便每个 session 稍后访问此结果?

java - 影响Java中不同类中的变量

Javascript - 获取没有页码的当前页面URL

html - Node 中的简单静态 HTML 服务器

c++ - 使用非静态消息处理程序获取 gstreamer 总线消息

c++ - 为什么将全局变量和静态变量初始化为其默认值?

Java - 根据属性在数组列表中排序

java - Apache Common CLI 无法识别选项

java - 单元测试 : Call @PostConstruct after defining mocked behaviour

variables - Powerapps - 库中的变量