码迷,mamicode.com
首页 > 其他好文 > 详细

代码块

时间:2016-12-01 03:30:13      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:生命周期   声明   sys   dem   rgs   []   构造方法   分类   概述   

代码块

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

代码块

标签:生命周期   声明   sys   dem   rgs   []   构造方法   分类   概述   

原文地址:http://www.cnblogs.com/wk520hll/p/6120271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!