一个java类的加载过程
2014-01-26 22:24
162 查看
摘要: 本文将讲述java类的1静态常量,2静态方法,3静态代码块,4类的构造函数,5一般常量,6一般方法,7一般代码块在加载过程中的顺序,熟悉一下对以后写代码的效率会有些帮助
1静态常量,2静态方法,3静态代码块,4类的构造函数,5一般常量,6一般方法,7一般代码块
这些在编译中的顺序是怎样的,一下将要用代码来解释一下:
运行后,打印结果如图
结果解释:第一行,静态代码块2,说明静态常量优先于静态代码块;
第二行,一般代码块2 1,说明一般常量加载优先于一般代码块;
第三行,构造函数2 1,说明静态常量和一般常量优先于构造函数;
第四五行,为方法调用不做比较;
现在可以知道的顺序有:静态常量>静态代码块>构造函数;
一般常量>一般代码块>构造函数。
现在将测试代码修改为:
其中只保留的静态数据和main方法(方法体为空)
结果如下:
结果解释:打印结果说明,类A在加载过程中,就已经将静态常量和静态代码块执行了,而静态方法没有执行,
联系之前的测试结果可以得出结论:
静态常量>静态代码块>一般常量>一般代码块>构造函数
而类中的静态方法和一般方法只有在调用时才会去执行。
1静态常量,2静态方法,3静态代码块,4类的构造函数,5一般常量,6一般方法,7一般代码块
这些在编译中的顺序是怎样的,一下将要用代码来解释一下:
public class A { static int a = 2; //定义静态变量 private static void doTell(){ //静态方法 System.out.println("静态方法"+a); } static{ //静态代码块 System.out.println("静态代码块"+a); } A(){ //构造函数 System.out.println("构造函数"+a+" "+b); } int b = 1; //定义一般变量 public void doSay() { //一般函数方法 // TODO Auto-generated method stub System.out.println("一般函数方法"+a+" "+b); } { //一般运算 System.out.println("一般代码块"+a+" "+b); } public static void main(String[] args) { A a = new A(); a.doSay(); A.doTell(); } }
运行后,打印结果如图
结果解释:第一行,静态代码块2,说明静态常量优先于静态代码块;
第二行,一般代码块2 1,说明一般常量加载优先于一般代码块;
第三行,构造函数2 1,说明静态常量和一般常量优先于构造函数;
第四五行,为方法调用不做比较;
现在可以知道的顺序有:静态常量>静态代码块>构造函数;
一般常量>一般代码块>构造函数。
现在将测试代码修改为:
public class A { static int a = 2; //定义静态变量 private static void doTell(){ //静态方法 System.out.println("静态方法"+a); } static{ //静态代码块 System.out.println("静态代码块"+a); } public static void main(String[] args) { } }
其中只保留的静态数据和main方法(方法体为空)
结果如下:
结果解释:打印结果说明,类A在加载过程中,就已经将静态常量和静态代码块执行了,而静态方法没有执行,
联系之前的测试结果可以得出结论:
静态常量>静态代码块>一般常量>一般代码块>构造函数
而类中的静态方法和一般方法只有在调用时才会去执行。
相关文章推荐
- 一个页面从输入URL到页面加载显示完成,这个过程都发生什java 基础知识-数组的7种算法(排序、求和、最值、遍历...)么?
- 举例说明一个 java程序的加载,初始化以及运行过程
- 深入研究Java中一个对象的初始化过程
- 黑马程序员_java的面向对象(对第六课静态..类的加载过程和单例的总结)
- Java学习回顾-对象在内存中的加载过程
- 博达面试题Java编写一个彩票双色球的过程
- java加载类创建对象的过程以及静态代码段的执行时机
- 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
- 深入Java日记——JVM类加载全过程
- Java类加载过程分析
- java:一个项目的开发过程(转)
- JVM如何加载一个类的过程,双亲委派模型中有哪些方法?
- 多多吃红薯,好好学java--浅析类加载过程及类加载器(一)
- java中用new创建一个对象的过程解析
- 解析 Java 类和对象的初始化过程(由一个单态模式引出的问题谈起)
- 一个页面从输入URL到页面加载显示完成,这个过程都发生了什么?
- Java学习之类加载全过程_JVM内存分析_反射机制核心原理_常量池理解
- Java类的加载过程
- 一个f12的最终html页面,是怎么加载出来的,过程如下
- 一个页面从输入url到页面加载显示完成,这个过程都发生了什么?