代码块(初始化块)和final关键字
1.代码块作用:用来初始化类、对象。
2.代码块如果有修饰的话,只能用static修饰
3.分类:分为静态代码块和非静态代码块
4.静态代码块(可以定义多个静态代码块,按静态代码块定义的先后顺序执行)
>内部可以有输出语句
>随着类的加载而执行,因为类只加载一次,所以静态代码块也只执行一次
>作用:对类的静态属性进行重新赋值
>静态代码块只能调用静态的属性和静态的方法
5.非静态代码块(由于静态代码块是随着类的加载而执行的,而非静态代码块则是在类加载后执行的,因此非静态代码块是在静态代码块之后执行)
>内部可以有输出语句
>随着对象的创建而执行,因为可以创建多个对象,所以非静态代码块可以执行多次
>作用:可以在创建对象时,对对象的属性进行初始化
>非静态代码块除了调用非静态的属性和非静态的方法外还可以调用静态属性和静态方法
代码块在构造器之前执行
final:最终的
1.final可以修饰类、属性、方法
2.final修饰类则这个类就不能被其他类继承
3.final修饰方法则这个方法也就无法被重写
4.final修饰变量则这个变量就是常量无法被修改
4.1final修饰的变量为属性时:可以考虑的赋值位置有:显示初始化,代码块中初始化、构造器中初始化(一般是在显示初始化时赋值,当如果是final修饰后的常量在每个对象中都不相同时,则说明是在构造器中进行赋值,每个构造器中赋的值不同,通过调用不同的构造器来使创建的对象,final修饰的常量不同)
4.2final修饰的变量为局部变量时: 局部变量为常量无法修改(特别是当修饰的局部变量为形参时。我们是在调用时赋值,一旦在调用时赋值就说明无法修改,不能再在方法中修改)
static final:修饰属性:全局常量(static final还可以用来修饰方法)