`
hucj
  • 浏览: 8163 次
社区版块
存档分类
最新评论

静态块的总结

    博客分类:
  • java
阅读更多

类装载步骤
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:

装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
初始化类中属性是静态代码块的常用用途,但只能使用一次。

 

 

总结:
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。

分享到:
评论

相关推荐

    java 多线程设计模式 进程详解

    同步块 嵌套锁 死锁 返回到银行的例子 同步静态方法 总结 第四章 等待和通知 返回到银行的例子 等待和通知 wait()、notify()和notifyAll() wait()和sleep() 线程中断 静态方法(有关同步的细节) 总结 ...

    VMProtect的逆向分析和静态还原

    阶段总结 二、VMProtect静态跟踪 (一)虚拟执行特点 (二)执行引擎的虚拟执行 (三)分析条件跳转的两条出边 三、字节码反编译 (一)中间表示语言 (二)指令化简和优化 (三)转换汇编指令——树模式匹配 (四)...

    c# static 静态数据成员

    ① 静态成员属于类所有,非静态成员属于类的实例所有。 ② 每创建一个类的实例,都市在内存中为非静(动)态成员新分派一块存储; 静态成员属于类所有,为各个类的...关于C#中静态数据成员和静态要领的总结。 1.静态

    Android代码块执行顺序分析总结

    本文介绍了Android代码块执行顺序分析总结,分享给大家,具体如下: 子类、父类变量,代码块,以及构造方法的加载顺序,是我们在程序开发中时不时遇到的一个问题,也是比较容易混淆的。 基础准备: 变量: 成员变量...

    c_c++中内存区域划分大总结

    3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.另外还有一个专门放常量的地方...

    关于JVM的总结

    类的生命周期: 加载->(验证->准备->解析)(连接)->初始化->使用->卸载 类被加载到虚拟机内存开始,到卸载出... 静态语句块中只能访问到定义在静态语句块之前的变量,定义在他之后的,在静态语句块中只能赋值不能访问

    杰普学习corejava总结笔记

    执行静态代码块 3.分配内存空间,同时初始化非静态的属性(赋默认值) 4.调用父类构造器(注意调用父类构造器之前已经给父类的非静态的属性显示赋值,如果有显示赋值的话) 5.父类构造器执行完后,如果自己声明属性的...

    单例模式的多种实现.docx

    3.2饿汉式(使用静态代码块) 7 3.3懒汉式(线程不安全) 8 3.4懒汉式(线程安全,使用同步方法) 9 3.5双重检查实现单例模式 10 3.6使用静态内部类实现单例模式 12 3.7使用枚举类实现单例模式 13 4.单例模式怎么用...

    c++ 面试题 总结

    块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程 序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费,平均浪费了50%的...

    java 面试题 总结

    静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %> 23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...

    进程、线程知识点总结

    进程:是个动态的概念,指的是一个静态的程序对某个数据集的一次运行活动,而程序是静态的概念,是由代码和数据组成的程序块而已。 进程5大特点:动态性,并发性,独立运行性,异步性,和结构化的特性。 在多道程序...

    java基础心得总结.rar

    static方法不存在override问题,当A类继承于B类时(假设A,B两类都有一个相同名字的静态方法text()),当B gao=new A(),然后对gao调用这个text()方法时候并不是向我们想象中的那样会进行后期绑定,此时调用的仍然是类B的...

    javaSE整体学习总结,超级全面

    资源包含了,java中亿点点的细节,构成方法重载的条件,内的定义,构造器的四个要点,创建一个对象分为四步,java内部模型,栈的特点,堆的特点,方法区(又叫静态区,也是堆),this的本质,static关键字核心用法,静态的初始化块,...

    python程序设计课程代码整理总结.rar

    它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。 Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python...

    【Java语言基础】初始化块

    文章目录【Java语言基础】初始化块使用初始化块静态初始化块总结代码 【Java语言基础】初始化块 初始化块又称为代码块。属于类中的第四大成员。本质上是一个方法,它也有方法体,但没有方法名,没有参数,没有返回,...

    CSS相对,绝对,固定,静态定位和显示效果——每天一遍小知识

    前言 这是我在这个网站整理的笔记,...静态定位——static3.固定定位——Fixed Positioning4.相对定位——Relative Position5. 绝对定位——Absolute Position6.自我总结,代码效果 一.显示属性——display 1.块元素—

    Java基础 面向对象入门基础知识 个人学习总结

    静态变量和静态方法静态变量静态方法静态初始化块 1.类和对象的定义 对象:万物皆对象,客观存在的事物。 类:类是模子 ,确定对象将会拥有的特征(属性)和行为(方法) 类的特点:类是对象的类型,具有相同属性和...

    1this,tostring类的继承.rar

    因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同...

    Test2.java

    隐式三步,静态构造代码块,main方法之间的执行顺序总结 静态构造代码块 > main方法 > 构造代码块 > 构造方法体 对于没有构造方法的类,系统默认赠送无参构造方法 隐式三步; 1,super( ); 2,给非静态成员变量赋值 ...

    PMD报错原因修改总结.pdf

    该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。与其他分析工具不同的是,PMD通过静态分析获知代码错误...

Global site tag (gtag.js) - Google Analytics