“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的
前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”
——《Java编程思想》
在我的理解中,static的重要作用就是剥离变量(方法)与对象的关系,static修饰的变量(方法)叫静态变量(方法)或是
类方法。static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
正因为static的特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须
依赖具体的对象才能够被调用。
static属性
static属性保存在全局数据区的内存之中,所有对象都可以进行该数据区的访问
描述共享属性,只需在属性前添加static关键字即可
若static属性被修改,所有对象都同步此属性
static方法
static定义的方法,直接通过类名称访问。
某些方法不希望受到对象的控制,即可以在没有实例化对象的时候执行,我们就用static定义(广泛存在于工具类中)。
两点说明:
所有的static方法不允许调用非static定义的属性或方法
所有的非static方法允许访问static方法或属性
static修饰内部类
关于static修饰内部类的说明在后续的Java内部类详解
static修饰代码块
static修饰的代码块又叫静态块,静态块的特点简单来说在类加载的过程中执行,并且执行一次,详细说明在后续的Java代码块详解