目录
1.1 前言
对于小白来说,刚刚接触面向对象,对于局部变量,实例变量和静态变量或许都会有种似懂非懂的感觉。
1.2 局部变量
在方法主体内部声明的变量称为局部变量。您只能在该方法中使用该变量,并且类中的其他方法甚至都不知道该变量存在。
顺便说一下,方法可以理解为类中的函数。
1.3 实例变量
在类内部但在方法主体外部声明的变量称为实例变量。它没有声明为 static 。之所以称为实例变量,是因为其值是特定于实例的,并且不会在实例之间共享。
1.4 静态变量
有 static 声明的变量就是静态变量。它不能再方法中声明,只能在该类的所有实例之间共享。当类加载到内存中时,静态变量的内存分配仅发生一次。
是不是到这看不太懂,来看看实例代码;
class Counter{
int count=0;// 区别在这里,没有static
Counter(){
count++;
System.out.println(count);
}
public static void main(String args[]){
Counter c1=new Counter();
Counter c2=new Counter();
Counter c3=new Counter();
}
}
运行结果:
1
1
1
class Counter2{
static int count=0; // 区别在这里,一个static可以让结果大不相同
Counter2(){
count++;
System.out.println(count);
}
public static void main(String args[]){
Counter2 c1=new Counter2();
Counter2 c2=new Counter2();
Counter2 c3=new Counter2();
}
}
运行结果:
1
2
3
对比两种运行结果,第一个实例没有声明静态变量(没有 static ),每次调用方法,都会在内存中重新分配内存,也就是重新生成一个 count ,并赋值(初始化)为 0(count = 0),所以第一段实例在内存中一共生成三个 count 。第二个实例声明静态变量(有 static ),静态变量只分配一次内存,所以三次方法调用都是调用同一个 count 。
1.5 总结
class A{
int data = 50; // 实例变量
static int m = 100; // 静态变量
void method(){
int n = 90; // 局部变量
}
}