java中的代码块概述

代码块基本概念

什么是代码块?

在java中,每个用{}引起来的代码的集合就被称作代码块。

代码块的分类

代码块可分为局部代码块,构造代码块,静态代码块,同步代码块。

局部代码块

在方法中定义的,随着方法的调用而加载,方法结束而释放,及早释放,提高内存利用率。

public class Test {
    public static void main(String[] args) {
      //定义在main方法中的代码块
        {
            int num=1;
            System.out.println("静态代码块执行了");
            System.out.println(num);
        }
    }
}

执行结果如下

静态代码块执行了
1

构造代码块:在java类中,定义在成员方法外面。每次实例化该对象都会执行,并且在构造方法之前就会执行。

public class Student {
    private String name;
    private String sNum;
    int age;

    {
        System.out.println("构造代码块执行了");
    }

    public Student() {
        System.out.println("构造方法执行了");
    }
}

class StudentTest{
    public static void main(String[] args) {
        Student student = new Student();
        Student student1 = new Student();

    }
}

执行结果:

构造代码块执行了
构造方法执行了
构造代码块执行了
构造方法执行了

静态代码块:用关键字static修饰的,定义在类中方法外,随类的加载而加载,只执行一次。所以他的执行优先于该类中所有的方法,代码块。

public class Demo1 {
    static{
        System.out.println("静态代码块执行了1");
    }

    public static void main(String[] args) {
        System.out.println("请看这里!");
    }

    static{
        System.out.println("静态代码块执行了2");
    }
}

执行结果

静态代码块执行了1
静态代码块执行了2
请看这里!

一个简单的代码块demo

public class Dog {
    static {
        System.out.println("Dog类中的静态代码块执行了。。。");
    }

    {
        System.out.println("构造代码执行了。。。");
    }
    public Dog() {
        System.out.println("构造方法执行了。。。。");
    }
}
class DogTest{
    static{
        System.out.println("测试类中的静态代码块执行了。。。");
    }
    public static void main(String[] args) {
        System.out.println("main方法执行了");
        Dog dog = new Dog();
        Dog dog1 = new Dog();

    }
}

这段程序的运行结果如下:

测试类中的静态代码块执行了。。。
main方法执行了
Dog类中的静态代码块执行了。。。
构造代码执行了。。。
构造方法执行了。。。。
构造代码执行了。。。
构造方法执行了。。。。

首先:测试类加载,测试类里面的静态代码块会优先执行,打印第一句,接下来main方法加载进栈内存,打印第二句话。然后创建第一个Dog类对象,Dog类加载,会执行Dog类中的静态代码块,打印第三句(无论后面执行什么,静态代码块只执行一次),创建第一个对象dog,构造代码块优先于构造方法执行,打印第四句,第五句,接下来创建第二个对象dog1,打印第六句和第七句。 

猜你喜欢

转载自blog.csdn.net/qq_37291761/article/details/83058213
今日推荐