Java程序执行的过程
ava程序执行的过程:
Step1:将字节码加入内存;
Step2:对字节码进行合法性检查;
Step3:jvm会为每个字节码文件都生成一个对象(class);
Step4:执行静态代码块,初始化静态成员等;
Step5:执行入口函数main方法;
注意:实例块和静态块,可以对java对象进行初始化操作,和构造器非常类似
静态块先于main方法执行,实例块先于构造方法执行
下面来看一段代码你能排出先后顺序吗?
Demo.java
public class Demo
{
    public int j = 10;
	public static int i = 0;  //静态成员
	//静态块    用于对静态成员初始化
	static
	{
		i=50;
		System.out.println("1、静态块1...");
	}
	//静态块    用于对静态成员初始化
	static
	{
		i=100;
		System.out.println("2、静态块2...");
	}
public Demo()
	{
		System.out.println("3、构造方法...");
		j=10;
	}	
	//实例块 在构造方法前执行一般也用于初始化成员变量
	{
		j=90;
		System.out.println("4、实例块2...");
	}
//实例块 在构造方法前执行一般也用于初始化成员变量
	{
		j=20;
		System.out.println("5、实例块2...");
	}
public static void main(String args[])
	{
		System.out.println("6、main方法开始---i="+i);
		Demo d=new Demo(http://www.amjmh.com);
	}
}
程序运行结果截图:
从结果我们可以看出当程序中有多个静态块或实例块程序按先后顺序执行。
---------------------
Java程序执行的过程的更多相关文章
- Java程序执行过程及内存机制
		本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和 ... 
- 性能监控之Java程序执行解析
		大家好,最近接触javassist技术,研究过程中对Java程序执行过程进行了一系列探索,弄清楚了几个盲区(仅针对个人而言),现将经验与大家分享. 1.编码->.java 通常指写代码的过程,最 ... 
- Java性能监控之Java程序执行解析
		大家好,最近接触javassist技术,研究过程中对Java程序执行过程进行了一系列探索,弄清楚了几个盲区(仅针对个人而言),现将经验与大家分享. 1.编码->.java 通常指写代码的过程,最 ... 
- Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)
		1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ... 
- [转载]JAVA内存分析——栈、堆、方法区 程序执行变化过程
		面向对象的内存分析 参考:http://www.sxt.cn/Java_jQuery_in_action/object-oriented.html :尚学堂JAVA300集-064内存分析详解_栈_堆 ... 
- 深入了解类加载过程及Java程序执行顺序
		前言 在Java中,静态 Static关键字使用十分常见 本文全面 & 详细解析静态 Static关键字,希望你们会喜欢 目录 1. 定义 一种 表示静态属性的 关键字 / 修饰符 2. 作用 ... 
- java程序执行内存处理过程
		我们学习知识,不仅要知其然,还要知其所以然,你的工资必定和你学习的深度成正比. 在以往.net的学习过程中,我们了解了怎么去开发一个程序,并有了一定的开发经验,但是一个程序具体是怎么在内存中运行的呢? ... 
- 【JAVA】【基础知识】Java程序执行过程
		1. Java程序制作过程 使用文本编辑器进行编辑 2. 编译源文件,生成class文件(字节码文件) javac源文件路径. 3.运行程序class文件. 
- 深入了解Java程序执行顺序
		Java中main方法,静态,非静态的执行顺序详解 Java程序运行时,第一件事情就是试图访问main方法,因为main相等于程序的入口,如果没有main方法,程序将无法启动,main方法更是占一个独 ... 
随机推荐
- poj2010 Moo University - Financial Aid 优先队列
			Description Bessie noted that although humans have many universities they can attend, cows have none ... 
- Go-内存To Be
			做一个快乐的互联网搬运工- 逃逸分析 逃逸分析的概念 在编译程序优化理论中,逃逸分析是一种确定指针动态范围的方法——分析在程序的哪些地方可以访问到指针. 它涉及到指针分析和形状分析. 当一个变量(或对 ... 
- (转)Linux下编译安装log4cxx
			Linux下编译安装log4cxx 一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. log4cxx ... 
- Linux中ssh及scp的连接
			1. 当你想获取另外一台电脑上的数据时,可以使用这个命令 scp -P 10022 root@172.30.83.173:~/ubuntu1.tar ./ -r 代表传输文件夹,直接传文件可以不加 ... 
- no suitable HttpMessageConverter found for response type
			在使用 RestTemplate 或者 Spring Cloud 的时候,经常会出现这个错误. 基本上出现的场景都是,我们要json,结果来了个 text/html. 两个原因: 第一个就是:服务器返 ... 
- 最小生成树(prim和Kruskal操!!SB题)
			Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30571 Accepted: 9220 D ... 
- [HDU 5293]Tree chain problem(树形dp+树链剖分)
			[HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ... 
- [Codeforces 464E] The Classic Problem(可持久化线段树)
			[Codeforces 464E] The Classic Problem(可持久化线段树) 题面 给出一个带权无向图,每条边的边权是\(2^{x_i}(x_i<10^5)\),求s到t的最短路 ... 
- [fw]Nvidia Linux Drive Privilege Escalation
			/* Anonymous * * How to use: sudo rm -rf / * * greetz: djrbliss, kad, Ac1dB1tch3z, nVidia! * * Only ... 
- RabbitMQ ——与Spring集成及exchange的direct、topic方式实现和简单队列实现
			程序整体结构 Maven依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ... 
