修饰符之static
概念
- static可以修饰属性和方法。
- 称为静态属性(类属性),静态方法(类方法)。
- 静态成员是全类所有对象共享的成员(存放在方法区)。
- 在全类只有一份,不因创建多个对象而产生多份。
- 不必创建对象,直接通过类名访问。
静态属性
静态属性可以用类名直接访问,在类加载时就会被初始化到方法区。(成员变量在创建对象时初始化)
静态方法
1.静态方法可以用类名直接调用。
2.静态方法中只能访问类的静态成员(包括属性和方法)。
3.静态方法中不可以出现this(this是指当前对象,而静态方法里时没有当前对象的)。
注意:
1.引用调静态方法,实际是对引用类型调静态方法。
2.静态方法只能被子类的静态方法覆盖,而且没有多态。
3.总上所述static修饰的属性和方法都是和类相关的和对象没关系。
初始代码块
动态初始代码块
在创建对象初始化属性的时候执行。
class MyClass{
String field = "实例属性";
{
System.out.println(field);
System.out.println("动态代码块");
}
public MyClass(){
System.out.println("构造方法");
}
}
静态初始代码块
在类加载的时候执行。
类加载
JVM首次使用某个类时,需要通过CLASSPATH查找该类的.class文件。
加载时机:
创建对象
创建子类对象
访问静态属性
调用静态方法
Class.forName(“全限定名”);
注意:
如果只是声明一个类的引用,不需要类加载。
类加载的步骤
1.如果需要,先加载父类
2.按顺序初始化静态属性,或执行静态初始代码块。
class MyClass{
String field = "实例属性";
static{
System.out.println(field);
System.out.println("静态代码块");
}
public MyClass(){
System.out.println("构造方法");
}
}