我有一个类,因为我需要两个变量,一个是静态变量,另一个是非静态变量。我的问题是当我们声明两个变量时,我们可以用相同的名称声明它们吗?
为什么我问这个问题是静态变量和非静态变量存储在两个不同的区域(静态变量在方法区和非静态(实例)变量在堆区)。 那么,如果我用相同的名称声明它们会怎样?如果错了,原因是什么?
最佳答案
不,您不能执行以下操作:
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/