代码块
什么是代码块?
由一对花括号括号起来的,就称为代码块
代码块的分类?
局部代码块
构造代码块
静态代码块
同步代码块(学习多线程的时候讲解)
局部代码块?
什么是局部代码块?
定义在方法中的代码,就称为局部代码块
class Demo {
public void print() {
{
}
}
}
局部代码块的作用是什么?
能够让局部变量,更早的在内存中消失,节省内存空间
构造代码块?
什么是构造代码块?
定义在类中,方法外的代码块,就称为构造代码块
class Demo {
{
}
public void print() {
}
}
构造代码块的作用是什么?
构造代码块是在创建对象的时候执行,并且是优先于构造方法先执行
可以将构造方法中的共性内容进行抽取,放入到构造代码块中,节省代码的编写
举例子:
public class Demo06 {
public static void main(String[] args) {
Child c1 = new Child();
Child c2 = new Child("张三");
Child c3 = new Child("哪吒", 18);
}
}
class Child {
{
System.out.println("哭");
}
public Child() {
//System.out.println("哭");
}
public Child(String name) {
//System.out.println("哭");
}
public Child(String name, int age) {
//System.out.println("哭");
}
}
静态代码块?
什么是静态代码块?
被静态修饰的构造代码块,就称为静态代码块
class Demo {
static {
}
public void print() {
}
}
静态代码块的作用是什么?
静态代码块是什么时候执行的?
当.class文件从本地磁盘加载到方法区中形成字节码文件对象的时候,静态代码块会随之执行
为什么静态代码块只会执行一次?
因为字节码文件只加载一次,并且优先于所有的对象存在于内存中,比构造方法先执行
有什么用?
给数据进行初始化,当数据只需要被初始化一次的时候,之后可以重复使用的时候,就可以使用
静态代码块