static
- 作用:用于修饰成员
- 具备以下特点:
- 随着类的加载二加载;
- 优先于对象而存在;
- 被所有对象所共享;
- 可以直接被类名所调用;
- 使用注意:
- 静态方法只能使用静态成员;
- 静态方法中不可以写this,super关键字;
- 主函数是静态的;
- 应用场景:
- 每个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用;
静态代码块
- 作用:用于给类进行初始化
- 随着类的加载而执行,只执行一次,并优先于主函数;
构造代码块
- 作用:给对象进行初始化
- 对象一建立就运行,而且优先于构造函数执行;
- 和构造函数的区别:
- 构造代码块是给所有对象进行统一初始化;
- 构造函数是给对应对象初始化;
构造函数
- 作用:给对象进行初始化
- 当一个类中没有定义构造函数时,那么系统会默认加入一个空参数的构造函数;当在类中定义了构造函数后,默认的构造函数就没有了;
对象的初始化过程
Person p = new Person();
- 将类加载到内存;
- 执行静态代码块;
- 在堆内存张红开辟空间,分配内存地址;
- 属性默认初始化;
- 属性显示初始化;
- 构造代码块的初始化;
- 构造函数的初始化;
- 内存地址赋值给栈内存中的变量;
初始化具体案例参见-Java初始化问题解析