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方法更是占一个独 ...
随机推荐
- Vagrant 入门 - 网络
原文地址 现在,我们启动了 web 服务器,并且通过同步目录使用宿主机上的文件提供服务.然而,还只能通过虚拟机中的终端访问服务器.这一章节中,我们会使用 Vagrant 的网络特性,配置 Vagran ...
- poi小案例
一:pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...
- Django中content-type组件
django-content 1.需求 一家餐馆,有多个菜系,粤菜.湘菜.闽南菜.东北菜等,每个菜系中的菜品又分为小份.中份.大份,每个菜系对应的菜品量价格不同,现需要将该需求建表. 2. 建表方式 ...
- python学习第十一天列表的分片和运算
列表的分片也叫切片,也就是从列表中取出一段赋值给另外一个变量,列表运算就是可以进行比较运算,连接运算,乘法运算等. 1,列表的分片 n1=[1,2,3,4,5,6,7,8,9] n2=[1:3] 包含 ...
- P4195 【模板】exBSGS/Spoj3105 Mod
传送门 首先要懂得 $BSGS$,$BSGS$ 可以求出关于 $Y$ 的方程 $X^Y \equiv Z (mod\ mo)$ 的最小解,其中 $gcd(X,Z)=1$ $exBSGS$ 算是 $BS ...
- Leetcode Lect1 String相关题目
Java 的 String 类基本用法介绍:http://www.runoob.com/java/java-string.html Java 的 String.substring 函数:https:/ ...
- Panabit的各种配置文件
Panabit的各种配置文件 1.启动配置文件路径:/etc/rc.local作用:这个文件里的内容是BSD启动后会自动执行的命令默认配置如下:fsck -y -t ufs /dev/ad0s2a & ...
- vue图片预加载
目的: 图片预加载能够使得用户在浏览后续页面的时候,不会出现图片加载一半导致浏览不流畅的情况. 一.方法一 项目打开的时候要对图片进行预加载,在App.vue里面的beforeCreate添加预加载程 ...
- Shell05--函数应用
目录 Shell05---函数应用 1. 函数基本概述 2. 函数基本使用 3. 函数参数传递 4. 函数状态返回 5. 函数场景示例 Shell05---函数应用 1. 函数基本概述 01. 什么是 ...
- 返回结果的 HTTP 状态 码
2xx 200:表示从客户端发来的请求在服务器端被正常处理了. 204:该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中 不含实体的主体部分.另外,也不允许返回任何实体的主体. 2 ...