一 代码块
1.代码块
-
在java中,用{}括起来的代码称为代码块
-
代码块的分类
局部代码块
构造代码块
静态代码块 -
局部代码块
定义位置: 方法中
作用: 限定变量的生命周期,及早释放,提高内存利用率
示例代码
public class MethodCodeBlockDemo {
public static void main(String[] args) {
int a = 10; //如果不加代码块,此时变量a是定义在方法中,在整个main方法中都是有效的
System.out.println(a);
{
//独立存在的{}就是代码块
int b = 20;
System.out.println(b);
}
}
}
- 构造代码块
定义位置: 类中方法外
特点: 每次构造方法执行时,都会执行该代码块中的代码,并且在构造方法执行前执行
作用: 将多个构造方法中相同的代码,抽取到构造方法中,提高代码的复用性
示例代码
public class ConstructorCodeBlockdDemo {
public static void main(String[] args) {
Student s = new Student();
Student ss = new Student("zhangsan",23);
}
}
class Student {
private String name;
private int age;
//1.位置:方法外,类里面.
//2.执行时机:优先于构造方法运行的.每一次创建对象的时候,都会先运行构造代码块,然后再执行构造方法
//3.作用:抽取构造方法中重复的代码.
{
System.out.println("开始执行构造方法了");
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 静态代码块
定义位置: 类中方法外
特点: 需要通过static关键词修饰,随着类的加载而加载,并且只执行一次
作用: 在类加载的时候做一些初始化的操作
示例代码
public class StaticCodeBlockDemo {
public static void main(String[] args) {
Student s = new Student();
Student ss = new Student("zhangsan",23);
}
}
class Student {
private String name;
private int age;
//1.位置:类中方法外
//2.格式:一对大括号 + static关键字
//3.执行时机:随着类的加载而加载,只执行一次.
//4.作用:用来加载一些数据初始化操作的.
static{
//一般都是一些数据初始化的操作
//一般是用来加载驱动的 --- 数据库
System.out.println("静态代码块执行了");
}
public Student()