static关键字的三种使用情况:
1、静态成员变量
静态成员变量可以直接用类名来调用,也就是说不用对类进行实例化,即生成对象,就可以对成员变量进行调用。当然也可以通过对象名来调用。
static成员变量被多个对象同时共用,也就是这些对象的static变量都指向同一块内存空间。
【所有的对象使用的静态变量是同一份】所以修改的时候要注意。
【感觉很像不同对象之间的全局变量】
【mars这样理解】静态变量属于类这一层次的,比对象这一层次要高,所有的对象是由类生成的,使用的都是同一个静态变量
2、静态函数
静态函数也是可以直接用类名来调用。
静态函数中不能使用非静态的成员变量。
【因为静态函数可以直接用类名来调用,如果使用非静态的成员变量的话,肯定是不可以的。因为非静态的成员变量
要通过对象的来进行调用,这也进一步解释了为什么this不能在static中使用,因为这个this没有所指向的对象,
this是指调用这个函数的对象,因为没有对象,所以不能使用this】
3、静态代码块
写法:
static{ 代码块 }
没有名字。静态代码块在装载类的时候就会执行。
作用是对静态变量进行初始化。