【1】static关键字
为了方便在没有创建对象的情况下来进行调用方法或变量。
被static修饰的方法一般称为静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的, 因为它不依赖于任何对象,(没有对象也就不存在this)在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法或者非静态成员变量都是必须依赖具体法人对象才能够被调用。
静态是随着类的加载而加载,this是随着对象的创建而存在,静态比对象先存在。
【2】static方法
被static修饰的方法一般称为静态方法,静态方法不能访问类的非静态成员变量和非静态成员方法,原因就是静态成员变量与静态成员方法都是只能被具体的对象才能调用。
也就是说静态的只能访问静态的
而非静态的可以访问静态的也可以访问非静态的
【3】static变量
static变量即静态变量,静态变量可以被所有的对象所共享,且在内存中只有一个副本,而且它仅在类首次加载时会被初始化。
static成员变量初始化的顺序按照定义大的顺序进行初始化
【4】static代码块
static的主要作用是优化性能,将程序中只需要进行一次的初始化操作模块都可以放在static代码块中,这样的话类在加载的时候,按照static顺序执行每个static代码块仅在类加载的时候执行一次,这样可以优化程序的性能,节省空间
【5】虽然static独立于对象,但是可以通过对象来访问它,也就是说静态成员变量虽然独立于对象但是不代表不可以通过对象去访问它 ,只要权限足够所有的静态方法和静态变量都可以通过对象来访问。
【6】Java中static不能用来修饰局部变量
【7】静态变量和成员变量的区别
A:所属不同:静态变量属于类,所以也成为类变量;成员变量属于对象,所以也成为实例变量(对象变量)
B:内存中位置不同:静态变量存储于方法区的静态区;成员变量存储于堆内存
C:内存出现时间不同:静态变量随着类的加载而加载,随着类的消失而消失;成员变量随着对象的创建而存在,随着对象的消失而消失
D:调用不同:静态变量可以通过类名调用,也可以通过对象来调用;成员变量只能通过对象名调用