static方法和static代码块区别
来源:互联网 发布:美国8月非农数据 编辑:程序博客网 时间:2024/04/29 15:08
一、类装载步骤
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
初始化类中属性是静态代码块的常用用途,但只能使用一次。
静态代码块在类第一次加载时执行;静态方法是被调用的时候才执行的。
例如:
public class Main {public static void main(String [] args){new Child();//语句(*) }}class Parent{ { System.out.println("parent block"); } static { System.out.println("parent static block"); } public Parent(){ System.out.println("parent constructor"); } } class Child extends Parent{ { System.out.println("child block"); } static { System.out.println("child static block"); } public Child(){ System.out.println("child constructor"); } }
结果:parent static block
child static block
parent block
parent constructor
child block
child constructor
三、总结
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
参考之:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html
- static方法和static代码块区别
- java static块和static方法及static方法和非static方法的区别
- java static块和static 方法 的使用区别
- static代码块和static修饰符
- static 变量 方法 代码块
- Java static块和static方法
- static语句块和static方法
- java中synchronized修饰的方法或代码块和static synchronized修饰方法或代码块的区别
- java静态代码块和静态方法的区别和调用顺序、static用法
- java基础--java静态代码块和静态方法的区别、static用法
- [转] java基础--java静态代码块和静态方法的区别、static用法
- static修饰类,变量和方法,代码块
- static静态变量,静态方法和静态代码块
- static函数、static代码块
- 代码块{ }与static{}的 区别
- static 块,static 方法详解
- static变量 static代码块 static方法 main()中的static 变量
- Java中普通代码块和static代码块的区别
- manifest文件导致,网狐无法正常工作问题.
- ArcGlobe三维开发之十九——GlobeControl与MapControl的二三维联动
- hdu 3068 最长回文_Manacher模板
- Portlet通过标签在不同的模式(PortletMode)窗口状态间切换
- Unity将字符数组转换为字符串向Android传递消息
- static方法和static代码块区别
- uva 208 Firetruck (需要预先处理 再dfs,TLE是此题AC常规步骤……)
- UML学习总结
- jq 知识选择
- 算法实战学习之递归(1)
- SSH学习之一 OpenSSH基本使用
- 连载:面向对象葵花宝典:思想、技巧与实践(27) - 动态模型设计
- 类与对象
- try---catch---finally