一、static的特点
static可以修饰成员变量,可以修饰成员方法还可以修饰代码块。
特点如下:
- 随着类的加载而加载;
- 优先于对象存在;
- 被类的所有对象共享;
- 可以通过类名调用(限于修饰成员变量和成员方法时)。
二、static修饰的内容在内存中的位置
静态的内容在方法区的静态区。
三、注意事项
- 静态方法中没有this关键字:
静态内容随着类加载而加载,this是随着对象创建而存在,静态内容优先于对象存在。 - 静态方法只能访问静态的成员变量和静态的成员方法
static方法
静态方法不依赖于任何对象,它属于类。因此,在静态方法中不能访问类的非静态成员变量和非静态成员方法。但是非静态成员方法可以访问静态成员方法和静态成员变量。
static变量
静态变量属于类,被所有的对象共享,在内存中只有一个副本,存在于方法区中的静态区,在类初次加载时被初始化。非静态变量则为对象所有,存在于栈内存中,在创建对象时被初始化。
static代码块
static块在类初次加载的时候执行,按照static块的顺序执行,只执行一次。