代码块

Posted 凯玲之恋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码块相关的知识,希望对你有一定的参考价值。

代码块

1.代码块概述

Java中,使用{}括起来的代码被称为代码块。

2.代码块分类

根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。

3.代码块的应用(创建对象,就会先走构造代码块然后再走构造方法)

1) 局部代码块

在方法中出现;限定变量生命周期,及早释放,提高内存利用率,(在大括号内有效)

    public static void main(String[] args) {

        {

        int x = 10;

        }    //出了这个范围就访问不到了,开发中作用小

    }

2) 构造代码块 (初始化块)

在类中方法外出现;多个构造方法方法中相同的代码可以存放到构造代码块中,每次调用构造都执行,并且在构造方法前执行

3) 静态代码块

在类中方法外出现,并加上static修饰;用于给类进行初始化(一般用于加载驱动),在加载的时候就执行,并且只执行一次随着类的加载而加载.静态代码块是优先于主方法执行的

class bj08_01 {

    public static void main(String[] args) {

        {        //局部代码块

        int x = 10;

        }

        Student s = new Student();

System.out.println("-------------------------------");

        Student s2 = new Student("张三",23);

    }

    static{

        System.out.println("我是在主方法类中的静态代码块");

    }

}

class Student {

    private String name;        //姓名

    private int age;        //年龄

    

    public Student() {

        System.out.println("空参构造");

    }        //空参

    public Student(String name,int age) {

        this.name = name;

        this.age = age;

        System.out.println("有参构造");

    }

 

    public void setName(String name) {        //设置姓名

        this.name = name;

    }

    public String getName() {        //获取姓名

        return name;

    }

 

    public void setAge(int age) {        //设置姓名

        this.age = age;

    }

    public int getAge() {        //获取姓名

        return age;

    }

    {

        System.out.println("构造代码块");

    }

    public void study() {        

        System.out.println("学生学习");

    }

    static {    //静态代码块 //优先于主方法执行

        System.out.println("静态代码块");

    }

}

 

执行结果:

我是在主方法类中的静态代码块

静态代码块

构造代码块

空参构造

-------------------------------------

构造代码块

有参构造

案例演示:

    例一:

        class Student {

            static {

                System.out.println("Student 静态代码块");

            }

            

            {

                System.out.println("Student 构造代码块");

            }

            

            public Student() {

                System.out.println("Student 构造方法");

            }

        }

      

        class Demo2_Student {

            static {

                System.out.println("Demo2_Student静态代码块");

            }

            

            public static void main(String[] args) {

                System.out.println("我是main方法");

                

                Student s1 = new Student();

                Student s2 = new Student();

            }

        }

结果是

Demo2_Student静态代码块

我是main方法

Student 静态代码块

Student 构造代码块

Student 构造方法

Student 构造代码块

Student 构造方法

    例二:

        class Fu {

            static {

                System.out.println("静态代码块Fu");

            }

      

            {

                System.out.println("构造代码块Fu");

            }

      

            public Fu() {

                System.out.println("构造方法Fu");

            }

        }

      

        class Zi extends Fu {

            static {

                System.out.println("静态代码块Zi");

            }

      

            {

                System.out.println("构造代码块Zi");

            }

      

            public Zi() {

                System.out.println("构造方法Zi");

            }

        }

      

        Zi z = new Zi(); 请执行结果。

静态代码块Fu

静态代码块Zi

构造代码块Fu

构造方法Fu

构造代码块Zi

构造方法Zi

以上是关于代码块的主要内容,如果未能解决你的问题,请参考以下文章

静态代码块-普通代码块-构造代码块(好多图系列)

Java中普通代码块,构造代码块,静态代码块区别及代码示例2 构造代码块

Java中普通代码块,构造代码块,静态代码块区别及代码示例2 构造代码块

java-普通代码块构造代码块和静态代码块的区别。

Java—代码块详解

代码块和作用域