代码块的使用
*基本介绍:
代码块又称初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法块中,通过{}包围起来。
代码块和方法不同,没有返回,没有参数,只有方法体,而且不会通过对象或类显式调用,而是加载类时,创建对象时隐式调用
*基本语法:
修饰符{
代码;
};
注意点:
1,修饰符可选,要写的话,只能写staitc
2,代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的叫普通代码块
3,逻辑语句可以为任何逻辑语句
4,;可以省略
*代码块使用注意和细节讨论:
1,static代码块也叫静态代码块,作用就是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次 ,如果是普通代码块,每创建一个对象就执行
2,类什么时候被加载:1,创建对象实例时(new)2,创建子类对象实例,父类也会被加载 3,使用类的静态成员时(静态属性,静态方法)
3,普通代码块在创建对象对象实例时,会被隐式的调用。被创建一次,就会调用一次,如果只是使用类的静态成员,普通代码块不会被执行。
小结:1,static代码块是类加载时,执行,执行一次 2,普通代码块是在创建对象时调用,创建一次,调用一次,3,类加载的三种情况。
4,创建一个对象时,在一个类中,调用顺序是:
(1),调用静态代码块和静态属性初始化【静态代码块和静态属性初始化调用优先级一样,如果有多个,按照它们的定义顺序调用】
(2),调用普通代码块和普通属性初始化【普通代码块和普通属性初始化调用优先级一样,如果有多个,按照它们的定义顺序调用】
(3),调用构造方法
5,构造器的最前面其实隐含了super()和调用普通代码块,静态相关的代码块,属性初始化,在类加载时就执行完了,因此是优先于构造器和普通代码块的执行的
6,在继承关系中,它们的静态代码块和静态属性,普通代码块和普通属性的调用顺序为:
(1),父类的静态代码块和静态属性(优先级一样,按定义顺序执行)
(2),子类的静态代码块和静态属性(优先级一样,按定义顺序执行)
(3),父类的普通代码块和普通属性(优先级一样,按定义顺序执行)
(4),父类的构造器
(5),子类的普通代码块和普通属性(优先级一样,按定义顺序执行)
(6),子类的构造器
7,静态代码块只能调用静态的成员(静态属性和静态方法),普通代码块可以调用任意成员