Java中的静态块\初始化块及main方法

时间:2022-10-20 02:23:59

Java中的静态块\初始化块及main方法

摘 要: Java是纯面向对象的程序设计语言,通常我们在类中定义成员变量和方法,但是在类中除了成员变量和方法外,还有静态块和初始化块。本文主要介绍Java程序中静态块、初始化块及main方法的运行顺序。

关键词: Java程序 静态块 初始化块 main函数

我们在编写Java程序时都知道,Java是由类组成的,类又由成员变量和成员方法组成,Java程序的运行由main方法所在的类开始执行;但是,在Java中除了函数、main函数之外,还包括静态块和初始化块,下面对它们分别进行介绍。

如下面的程序:

public class exam {

static{

System.out.println("static!");

}

public static void main(String[ ] args) {

System.out.println("main function!");

}

}

以上程序包括静态块和main函数,它们的执行顺序是:先执行静态块,然后执行main方法。

结果如下:

static!

main function!

再看下面的程序:

public class exam {

static{

System.out.println("test");

}

{

System.out.println("exam");

}

public static void main(String args[ ]){

new Child();

}

}

class Father{

static{

System.out.println("Father static!");

}

{

System.out.println("Father block!");

}

Father()

{

System.out.println("Father Constructor!");

}

}

class Child extends Father{

static{

System.out.println("Child static!");

}

{

System.out.println("Child block!");

}

Child(){

System.out.println("Child Constructor!");

}

}

以上程序的执行结果是:Static静态块―父类的静态块―子类的静态块―父类的初始化块―父类的构造函数―子类的初始化块―子类的构造函数。

结果如下:

test

Father static!

Child static!

Father block!

Father Constructor!

Child block!

Child Constructor!

通过对以上程序的分析,我们可以发现在整个程序的执行过程中,除了函数之外还有一些静态块和初始化块,以及它们的执行顺序。Static静态块的特点是在类加载的时候就执行,而且只执行一次。

再看如下程序的执行结果,以下程序在上面程序的基础上进行了修改。

public class exam {

static{

System.out.println("test");

//System.exit(0);

}

{

System.out.println("exam");

}

public static void main(String args[ ]){

new Child( );

new exam( );

new Child( );

}

}

class Father{

static{

System.out.println("Father static!");

}

{

System.out.println("Father block!");

}

Father( )

{

System.out.println("Father Constructor!");

}

}

class Child extends Father{

static{

System.out.println("Child static!");

}

{

System.out.println("Child block!");

}

Child(){

System.out.println("Child Constructor!");

}

}

结果如下:

test

Father static!

Child static!

Father block!

Father Constructor!

Child block!

Child Constructor!

exam

Father block!

Father Constructor!

Child block!

Child Constructor!

由以上程序的执行结果可知,当再次创建某一个类的实例的时候,不会再执行类中的静态块,但是初始化块还是会执行。

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

上一篇:数据库扫描的一种快速关联规则挖掘算法 下一篇:PLC程序设计编程技巧