静态变量又称类变量,区分于实例变量。在类装入实例之前,就已经生成类变量了,且类变量可以通过类名直接调用,不需要创建实例也可。
不管创建多少的实例,静态变量/方法都只独有一份存在内存中,并不会被各个实例所独有
public class First {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("This is the very first code.");
StaticExample.counter++;//静态变量counter是可以通过类名直接调用的
StaticExample[] examples=new StaticExample[10];
for(int i=0;i<examples.length;i++)
examples[i]=new StaticExample();
System.out.println("counter="+StaticExample.counter);
}
}
class StaticExample
{
public static int counter;
public StaticExample()
{
counter++;
}
}
以上实验,最终显示counter为10,如果没有static修饰,应该是每个实例都有一个counter变量为1,这就是类变量与实例变量的区别
用static修饰,就只能访问自己方法体内的局部变量、自己的参数或者其他的静态变量,连所属类的非静态变量(实例变量)都不能访问。这也就是为什么被main函数直接调用的方法,需要在前面加上static修饰