- 用来初始化类、对象
- 代码块如果有修饰的话,只能用static.
- 分类:静态代码块和非静态代码块
- 静态代码块:
- 内部可以有输出语句;
- 随着类的加载而执行(只执行一次),只要类没有重新加载就不会重新执行
- 静态代码块内只能调用静态的属性,静态的方法,不能调用非静态的结构
- 非静态代码块:
- 内部可以有输出语句;
- 随着对象的创建(new 对象)而执行(每new一个就执行一次)
- 非静态代码可以调用静态的属性、方法,或者非静态的属性、方法,
- 可以有多个代码块,执行顺序是按照声明的先后顺序执行
- 静态代码块的执行是优先于非静态代码块的执行
package com.block.java;
public class BlockTest {
public static void main(String[] args) {
String desc=Person.desc;
Person p1=new Person();
Person p2=new Person();
}
}
class Person{
// 属性
String name;
int age;
static String desc="我是一个人";
// 构造器
public Person() {
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
// 方法
public void eat() {
System.out.println("吃饭");
}
public static void info()
{
System.out.println("我是一个快乐的人");
}
// 代码块
{ //非静态代码块
System.out.println("block!");
}
static { // 静态代码块
System.out.println("static block!");
}
}