一. 什么是代码块?
使用{ } 标记的代码就是代码块,由于所在位置不同分为局部代码块,构造代码块,静态代码块。
二. 局部代码块
方法中定义的变量叫做局部变量,在方法中定义的代码块也叫做局部代码块。
例如 : 以下局部代码块定义在main方法中
public class Test {
public static void main(String[] args) {
// 局部变量:方法中定义的变量 局部代码块: 方法中定义的代码块
{
int num = 2;
System.out.println(num);
}
}
}
三. 构造代码块:
构造代码块定义在类中成员位置上(类中方法外),构造代码块优先执行于构造方法,每创建一次对象都会执行以下构造代码块
例如 : 以下构造代码块定义在Demo类中
public class Test {
public static void main(String[] args) {
// 局部变量:方法中定义的变量 局部代码块: 方法中定义的代码块
// {
// int num = 2;
// System.out.println(num);
// }
Demo d1 = new Demo();
System.out.println("================================================");
Demo d2 = new Demo();
}
}
class Demo {
int num;
// 构造代码块
{
System.out.println("我是构造代码块");
}
public Demo() {
System.out.println("我是无参构造方法");
}
public Demo(int num) {
this.num = num;
}
}
执行结果如下图 :
四. 静态代码块:
1. 概念:被static静态修饰符修饰的代码块就是静态代码块,定义在类中成员位置上(类中方法外),静态代码块优先执行于main方法和构造方法之前,当以任意形式第一次使用到该类时执行。该类不管创建多少对象,静态代码块只执行一次。可用于给静态变量赋值,用来给类进行初始化。
例如 : 以下静态代码块定义在Demo类中
public class Test {
public static void main(String[] args) {
// 局部变量:方法中定义的变量 局部代码块: 方法中定义的代码块
// {
// int num = 2;
// System.out.println(num);
// }
Demo d1 = new Demo();
System.out.println("================================================");
Demo d2 = new Demo();
}
}
class Demo {
int num;
// 静态代码块
static {
System.out.println("我是静态代码块");
}
public Demo() {
System.out.println("我是无参构造方法");
}
public Demo(int num) {
this.num = num;
}
}
执行结果如下图 :
2. 作用:给类变量进行初始化赋值。
public class StaticDemo {
public static int number;
public static ArrayList<String> list;
static {
// 给类变量赋值
number = 2;
list = new ArrayList<String>();
// 添加元素到集合中
list.add("张三");
list.add("李四");
}
}