一、代码块
作用:用来初始化类、对象
2. 分类:静态代码块 和 非静态代码块
1. 静态代码块 : 用static修饰的代码块
-
内部可以有输出语句
-
随着类的加载而执行,且只执行一次
-
作用:初始化类的信息
-
如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
-
静态代码块的执行要优先于非静态代码块的执行
-
静态代码块内只能调用静态的属性、静态的方法、不能调用非静态的结构
例:
class Person{
public static int total;
static {
total = 100;
System.out.println("in static block!");
}
}
public class PersonTest{
public static void main(String[] args){
System.out.println("total = " + Person.total);
System.out.println("total = " + Person.total);
}
}
2.非静态代码块:没有static修饰的代码块
-
内部可以有输出语句
-
随着对象的创建而执行
-
每创建一个对象,就执行一次非静态代码块
-
作用:可以在创建对象时,对对象的属性等进行初始化
-
非静态代码块内可以调用静态的属性、静态的方法和非静态的结构
二、final关键字
final可以用来修饰的结构:类、方法、变量
作用:final标记的类不能被继承;final标记的方法不能被子类重写;final标记的变量(成员变量或局部变量)即称为常量。且只能被赋值一次
1.final修饰类:
final class A {}
class B extends A {} //错误,不能被继承
2.final修饰方法:
class A {
public final void print(){
System.out.println("a");
}
}
class B extends A {
public void print() { // 错误,不能被重写。
System.out.println("b");
}
}
3.final修饰变量->常量
class A {
private final String INFO = "A";//声明常量
//常量名要大写,内容不可以修改
}