Java读书笔记十二(Java中的代码块)

来源:互联网 发布:淘宝主营占比重要性 编辑:程序博客网 时间:2024/06/01 10:20

 

 前言

 我们知道在java中通过构造器来为对象进行初始化操作,但是在java中与构造器类似的还有初始化块的操作,下面小编来为大家分享一下。

 初始化块使用

 在Java中初始化块是java中出现的第4中成员,前三种分别是成员变量、方法和构造器。一个类中可以有多个初始化块,并且相同类型的初始化块是按照顺序依次执行的。初始化块的修饰符只能是static,初始化块可以包含任何可执行语句,包括定义局部变量、调用其他对象方法,以及使用分支、循环语句等

 

/**      * @FileName: test.java    * @Package:com.number    * @Description: TODO   * @author: LUCKY     * @date:2015年11月29日 下午12:55:00    * @version V1.0      */package com.number;/** * @ClassName: test * @Description: TODO * @author: LUCKY * @date:2015年11月29日 下午12:55:00 */public class test {int cd;int d=9; {// 下面定义一个初始化块int a = 6;System.out.println(a > 4 ? "局部变量a大于4" : "局部变量a小于4");} int c=0;    public  test(){    cd=10;    System.out.println("初始化构造器");    }public static void main(String[] args) {test test = new test();System.out.println(Integer.compare(2, 3));}}

 初始化块和构造器

 可以从某种程度上来看,初始化块是构造器的补充,初始化块总是在构造器之前执行,可以使用初始化器来进行对象的初始化操作。

 但是初始化块与构造器又有区别,它只是一段固定的执行的代码,不能接受任何的参数。因此初始化器的应用场景我们可以理解为,当两个或者多个构造器中有相同的初始化代码,并且这些初始化代码无须接受参数的时候,就可以把他们放在初始化块中定义。通过把多个构造器中相同的代码提取到初始化中定义,能更好的提高初始化代码的复用,提高整个应用的可维护性。

 静态初始化块

 如果定义初始化块时使用了static修饰符,则这个初始化块就变成了静态初始化块,也被称为类初始化块(普通初始化块负责对对象进行初始化操作,类初始化块负责对类进行初始化)。静态初始化块是与类相关的,系统将在类初始化块阶段进行静态初始化块,而不是在创建对象的时候才执行。因此静态初始化块总是比普通初始化块先执行。

 废话不多说了,来看一下下面的Demo,解解闷吧!一定要认真的跑一遍。

package com.test;class Root{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}public Root(){System.out.println("Root的无参数的构造器");}}class Mid extends Root{static{System.out.println("Mid的静态初始化块");}{System.out.println("Mid的普通初始化块");}public Mid(){System.out.println("Mid的无参数的构造器");}public Mid(String msg){// 通过this调用同一类中重载的构造器this();System.out.println("Mid的带参数构造器,其参数值:"+ msg);}}class Leaf extends Mid{static{System.out.println("Leaf的静态初始化块");}{System.out.println("Leaf的普通初始化块");}public Leaf(){// 通过super调用父类中有一个字符串参数的构造器super("疯狂Java讲义");System.out.println("执行Leaf的构造器");}}public class Test{public static void main(String[] args){new Leaf();}}


0 0
原创粉丝点击