level 9
按照我目前的理解,其实java里没什么全局不全局的,就是作用域的问题。
所谓的全局变量就是用static修饰的变量,静态变量,它与普通变量的储存位置不同,这涉及到堆和栈的问题。
下面举例:
class ABC{
int a;
int b;
public void test(int b){
int a=b;
this.a=a;
this.b=a*2;
}
}
ABC abc= new ABC().test(10);
这时候
abc.a是10
abc.b是20
这个例子中方法的形参(int b)和方法内的(int a)都只在方法中有效。而ABC类的属性变量a,b是属于abc对象的属性,只要不销毁这个对象它始终有效,可以通过abc.a,abc.b调用。
class AAA{
static int a=10;
}
这时候a是一个静态变量,可以直接用类名调用,不用实例化对象,AAA.a,在其他类中也可以调用。比如
class BBB{
int a;
public void show(){
a=AAA.a;
}
}
2020年09月05日 08点09分