static静态修饰符

大致概念: static 修饰方法 ,称为类方法 ,也叫静态方法
语法: static 返回值类型 方法名(参数列表){} 使用: 类名.方法名(参数) //对象名.方法名(参数)
① 静态方法只能直接访问静态成员,不能直接访问非静态成员。
注意:静态方法中不能使用this和super的前缀,指代补明确的原因。
② 静态方法可以被继承,没有多态。
注意:多态代表的是父类引用指向子类对象,通过父类引用调用方法,如果子类方法将父类中的方法覆盖了则执行的是子类覆盖后的方法实现。静态方法不存在此特点。 动态初始化代码块:定义在 类以内,方法以外的代码块。
用于创建对象时 和 属性初始化 按照定义的顺序 依次进行对象的初始化工作。
每 new 一次对象就调用一次
静态初始化代码块:被 static 修饰的初始化代码块。 用在 类加载 时 和 static 属性,按照定义的顺序,依次进行初始化工作。 只在类加载时调用一次
类加载:当 JVM 第一次使用某个类时,会先在 classpath 下面,找到对应的class文件,并且对class文件进行读取,获取其中的类相关的信息(属性、方法的声明、包、…) , 读入内存并且保存起来的过程。
注意:类加载时,只加载static修饰的成员。
什么时候类加载:
1)创建对象
2)使用类的 静态属性或者方法。
3)创建子类对象时。
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。
总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。static静态修饰符