Java程序初始化过程详解

觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱。我觉得还是要搞清楚它的过程比较好。所以现在结合我的学习经验写出具体过程:

过程如下:

1.在类的声明里查看有无静态元素(static element, 我姑且这么叫吧),比如:

static int x = 1,
{
 //block
 float sss = 333.3; String str = "hello";
}

或者 比如

static {
 //(static block),
 int x = 2;
 double y = 33.3;
}

如果有static element则首先执行其中语句,但注意static element只执行一次,在第二次创建类的对象的时候,就不会去执行static element的语句.

2.查看此类是否为启动运行类,若为启动运行类,则执行main()方法里的语句对应语句

3.若不是启动运行类,则按代码的排版先后顺序继续执行非static element的变量赋值以及代码块.

4.最后执行构造方法,如果在被调用的构造方法里面有this关键字(注意,如果你考虑要调用其他构造方法,则应该把this写在最前面,不然会产生错误),则先调用相应构造方法主体,调用完之后再执行自己的剩下语句.

/** *//**
*
* @author livahu
* Created on 2006年9月6日, 下午17:00
*/
class FirstClass ...{
 FirstClass(int i) ...{
  System.out.println("FirstClass(" + i + ")");
 }
 void useMethod(int k) ...{
  System.out.println("useMethod(" + k + ")");
 }
}
class SecondClass ...{
 static FirstClass fc1 = new FirstClass(1);
 FirstClass fc3 = new FirstClass(3);
 static ...{
  FirstClass fc2 = new FirstClass(2);
 }
 ...{
  System.out.println("SecondClass's block, this block is not static block.");
 }
 SecondClass() ...{
  System.out.println("SecondClass()");
 }
 FirstClass fc4 = new FirstClass(4);
}
public class InitiationDemo ...{
 SecondClass sc1 = new SecondClass();
 ...{
  System.out.println("Hello Java World!");
 }
 public static void main(String[] args) ...{
  System.out.println("Inside main()");
  SecondClass.fc1.useMethod(100);
  InitiationDemo idObj = new InitiationDemo();
 }
 static SecondClass sc2 = new SecondClass();
}

运行结果:

FirstClass(1)
FirstClass(2)
FirstClass(3)
SecondClass's block, this block is not static block.
FirstClass(4)
SecondClass()
Inside main()
useMethod(100)
FirstClass(3)
SecondClass's block, this block is not static block.
FirstClass(4)
SecondClass()
Hello Java World!

时间: 2025-01-21 01:16:21

Java程序初始化过程详解的相关文章

Android4.X中SIM卡信息初始化过程详解_Android

本文实例讲述了Android4.X中SIM卡信息初始化过程详解.分享给大家供大家参考,具体如下: Phone 对象初始化的过程中,会加载SIM卡的部分数据信息,这些信息会保存在IccRecords 和 AdnRecordCache 中.SIM卡的数据信息的初始化过程主要分为如下几个步骤 1.RIL 和 UiccController 建立监听关系 ,SIM卡状态发生变化时,UiccController 第一个去处理. Phone 应用初始化 Phone 对象时会建立一个 RIL 和UiccCont

Android4.X中SIM卡信息初始化过程详解

本文实例讲述了Android4.X中SIM卡信息初始化过程详解.分享给大家供大家参考,具体如下: Phone 对象初始化的过程中,会加载SIM卡的部分数据信息,这些信息会保存在IccRecords 和 AdnRecordCache 中.SIM卡的数据信息的初始化过程主要分为如下几个步骤 1.RIL 和 UiccController 建立监听关系 ,SIM卡状态发生变化时,UiccController 第一个去处理. Phone 应用初始化 Phone 对象时会建立一个 RIL 和UiccCont

Linux操作系统的内核初始化过程详解

概况 系统的引导和初始化是操作系统实现控制的第一步,也是集中体现系统优劣的重要部分.LINUX作为一个免费的准UNIX操作系统,在众多业余爱好者以及小型商业处理市场表现不俗,成为继WINDOWS系列后的另一个主流.了解LINUX系统的初始化,对于进一步掌握UNIX系统是十分有帮助的. 通常,LINUX系统的初始化可以分为两部分:内核部分和init程序部分.内核主要完成系统的硬件检测和初始化,init程序则主要完成系统的各项配置. 内核初始化详解 通常情况下,计算机首先用LILO程序引导内核的一部

php调用自己java程序的方法详解_php技巧

本文实例讲述了php调用自己的java程序实现方法.分享给大家供大家参考,具体如下: 最开始要装jdk这个就不用说了,我装的是java ee 5+jdk 1.把下载的php-java-bridge_5.2.2_j2ee.zip解压出来,里面有个JavaBridge.war 直接用winrar打开,到WEB-INF/lib/JavaBridge.jar 把这个jar包拷到 你的php目录的ext/下. 2.打开war包,里面有个java的文件夹,把他全部拷到你的PHP项目下,如/demo/java

使用native方法扩展Java程序的功能详解

Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可以将native方法比作Java程序同C程序的接口,其实现步骤: 1.在Java中声明native()方法,然后编译: 2.用javah产生一个.h文件: 3.写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件): 4.将第三步的.cp

Android的init过程详解(一)init的初始化

本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助.本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现. Android本质上就是一个基于Linux内核的操作系统.与Ubuntu Linux.Fedora Linux类似.只是Android在应用层专门为移动设备添加了一些特有的支持.既然An

在docker中部署tomcat并且部署java应用程序的步骤详解_docker

先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Docker

《嵌入式 Linux应用程序开发标准教程(第2版)》——2.2 Linux启动过程详解

2.2 Linux启动过程详解 嵌入式 Linux应用程序开发标准教程(第2版) 在了解了Linux的常见命令之后,下面详细讲解Linux的启动过程.Linux的启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识. 2.2.1 概述 用户开机启动Linux过程如下: (1)当用户打开PC(intel CPU)的电源时,CPU将自动进入实模式,并从地址0xFFFF0000开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址.这时BIOS进行开机自检,并按BI

Tomcat与Java Web开发技术详解连载之一

web|详解 本章介绍如何在Tomcat上创建和发布Web应用.这里首先讲解Tomcat的目录结构以及Web应用的目录结构,接着介绍如何将HTML.Servlet.JSP和Tag Library部署到Web应用中,然后介绍把整个Web应用打包并发布的方法,最后介绍如何在Tomcat上配置虚拟主机. 本章侧重于讨论Web应用的结构和发布方法,所以没有对本章的Servlet和JSP的例子进行详细解释,关于Servlet和JSP的技术可以分别参考其它章节的内容. 2.1 Tomcat的目录结构 在To