static关键字可以用来修饰方法或者变量,不可以用来修饰类或者接口。被static修饰的方法或者变量,在类被加载的时候会被加载到内存,被这个类的所有实例共享。被static修饰的方法中,不可以之间调用非static方法或直接引用非static变量,但是非static方法可以直接调用static方法。而static最直接的作用就是,可以直接通过类名调用被static修饰的变量或者方法。
在内存方面的区别:对于static变量,也称为类变量,在内存中只有一个拷贝,而非static变量,也成为实例变量,每创建一个实例,就会为实例变量分配一次内存,因此对实例变量操作,是互不影响的。需要注意的是:非static方法中是不能声明static变量的!很容易理解:不可能在那个变量所属的方法还不存在于内存中时那个变量就存在于内存中了。
在类中还有static代码块,可以有多个,这些代码在类被加载的时候执行,只会被执行一次,不存在于任何方法体内。多个static代码块的执行顺序是从上到下。