`
pterodactyl
  • 浏览: 752940 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java初始化总结

    博客分类:
  • java
阅读更多
Java初始化总结
1 概述
Java中,每个类在使用前都需要进行初始化,所以理解初始化是理解java的开端。

在Java中有两个隐藏了的方法:和。这两个方法是属于Java虚拟机的,也就是说在程序中我们是不可以调用的。具体可见:

http://dev2dev.bea.com.cn/bbsdoc/20060704286.html

"clint":对类进行初始化。即在类被装载时,JVM会调用内置的方法对类成员和静态初始化块进行初始化调用(也就是static部分)。

"init":对对象进行初始化。即在创建对象时,JVM会调用方法对实例变量和初始化块进行初始化(然后才是构造方法)。

2 举例说明
2.1 普通类初始化
/*  
* Normal.java  
*  
* Created on 2007-5-27, 16:40:14  
*  
* 普通类的初始化,先是初始化块,然后是构造方法  
*/  
  
package javabase.init;   
  
/**  
*  
* @author Penny Huang  
*/  
public class Normal   
{   
    {   
        System.out.println("Normal ");   
    }   
    public Normal ()   
    {   
        System.out.println("Normal construct");   
    }       
}   

输出:

Normal

Normal construct

结论:对象初始化时,先是初始化块,然后才是构造方法。  

2.2 普通类静态初始化
/*  
* NormalStatic.java  
*  
* Created on 2007-5-27, 16:58:48  
*  
* 有静态初始化的类,首先是初始化静态块,然后是一般的初始化块,最后是构造方法  
*/  
  
package javabase.init;   
  
/**  
*  
* @author Penny Huang  
*/  
public class NormalStatic   
{   
    static  
    {   
        System.out.println("NormalStatic ");   
    }   
       
    {   
        System.out.println("NormalStatic ");   
    }   
       
    public NormalStatic ()   
    {   
        System.out.println("NormalStatic construct");   
    }       
}   

输出:

NormalStatic

NormalStatic

NormalStatic construct

结论:先是初始化静态部分,然后才初始化其他部分(类是先加载,然后才创建对象,而静态部分是在类加载时初始化的)。



2.3 继承于普通类的初始化
/*  
* Special.java  
*   
* Created on 2007-5-27, 17:01:34  
*   
* 继承于普通类,首先是父类初始化块,然后是父类构造方法,之后是子类的初始化块,最后是子类构造方法  
*/  
  
package javabase.init;   
  
/**  
*  
* @author Penny Huang  
*/  
public class Special extends Normal   
{   
  
    {   
        System.out.println("Special ");   
    }   
  
    public Special()    
    {   
        System.out.println("Special construct");   
    }   
  
}   

输出:

Special

Special construct

Normal

Normal construct

结论:先初始化父类(默认调用父类的无参构造方法),然后才初始化子类。



2.4 继承于有静态初始化的类的初始化
/*  
* SpecailStatic.java  
*   
* Created on 2007-5-27, 17:12:13  
*   
* 继承于有静态初始化的类,首先是父类静态初始化,然后是子类静态初始化,之后是父类初始化,最后子类初始化  
*/  
  
package javabase.init;   
  
/**  
*  
* @author Penny Huang  
*/  
public class SpecailStatic extends NormalStatic{   
    static  
    {   
        System.out.println("SpecialStatic ");   
    }   
       
    {   
        System.out.println("SpecialStatic ");   
    }   
       
    public SpecailStatic ()    
    {   
        System.out.println("SpecialStatic construct");   
    }   
  
}   

输出:

SpecialStatic

NormalStatic

SpecialStatic

SpecialStatic construct

NormalStatic

NormalStatic construct

结论:先静后动,先父后子。

  

3 总结 
Java初始化的顺序如下:

父类静态初始化---->子类静态初始化---->父类初始化块---->父类构造方法---->子类初始化块---->子类构造方法。

分享到:
评论

相关推荐

    Java 基础核心总结 +经典算法大全.rar

    类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...

    【Java语言基础】初始化块

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

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    构造器初始化 15 初始化顺序 16 this 和 super 16 访问控制权限 16 继承 17 多态 17 代理 17 Static 17 Final 17 接⼝和抽象类 18 接⼝ 18 抽象类 18 异常 18 认识 Exception 18 什么是 Throwable 18 常⻅的 ...

    Java_Web总结

    * 初始化:Servlet 容器将 Servlet 初始化 * 服务:Servlet 处理 HTTP 请求 * 销毁:Servlet 容器将 Servlet 销毁 2.5. ServletConfig 与 ServletContext ServletConfig 和 ServletContext 是指 Servlet 应用程序...

    Java实验-数组的定义、初始化方法 掌握数组的遍历方法 掌握Arryas类的使用

    Java实验-数组的定义、初始化方法 掌握数组的遍历方法 掌握Arryas类的使用 Java实验报告中,主要讨论了数组的定义、初始化方法、数组的遍历方法和Arryas类的使用。下面是详细的知识点总结: 一、数组的定义和初始...

    java 编程入门思考

    4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 ...

    JAVA基础知识精华总结 收藏

    JAVA基础知识精华总结 收藏 1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    java培训相关基础知识总结

    欧柏泰克java培训相关基础知识总结!一、Java数组声明、创建、初始化;二、Java中的String类型;三、在Java怎样实现对数组的复制

    Java编码规范总结

    4.多线程错误 - 错误的延迟初始化和更新静态属性。 5.错误用法 - 集合转换为数组元素时发生的类型转换错误。 修复建议:使用c.toArray(new String[c.size()])。 6.不良实践 - 方法返回boolean类型返回了null。 ...

    Java类的加载、链接和初始化

    一、Java的类加载机制回顾与总结:  我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的是把Java字节代码转换成JVM中的java.lang.Class类的对象。这样Java可以对该对象进行一系列操作,...

    Java开发者文档,分享日常学习的一些小知识点 .rar

    很多初学java的新人不知道哪些java基础知识必须掌握,下面小编为大家精心整理的java基础知识点总结,方便大家学习!  方法/步骤  1、对象的初始化  (1) 非静态对象的初始化  在创建对象时,对象所在类的所有...

    Thinking in java4(中文高清版)-java的'圣经'

    4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以...

    java深度历险

    JAVA类的加载、链接和初始化 11 JAVA类的加载 11 JAVA类的链接 12 JAVA类的初始化 13 创建自己的类加载器 14 参考资料 15 JAVA线程:基本概念、可见性与同步 16 JAVA线程基本概念 16 可见性 17 JAVA中的锁 18 JAVA...

    Java类的初始化顺序知识点总结

    在本篇文章里小编给大家整理的是关于Java类的初始化顺序知识点总结,需要的朋友们可以学习下。

    Java100个经典例子

    Java 语言中数组数据操作包括数组的初始化、数组的基本操作和数组的遍历等。数组是一种重要的数据结构,在 Java 语言中广泛应用。 Java 语言是一种功能强大且灵活的编程语言,它提供了强大的功能和灵活的编程模型。...

    JAVA基础知识精华总结

    JAVA基础知识精华总结 1、对象的初始化 2、继承时,对象的初始化过程 3、关于构造方法 4、有关public、private和protected 5、抽象类 ..........

    java100道选择题含答案

    在 Java 中,静态初始化器可以多次出现,每个静态初始化器都会执行一次。 12. 关于以下程序代码的说明正确的是?(D)答案:程序通过编译,输出结果为:x=102 在 Java 中,私有静态变量可以在静态方法中访问和修改...

    java 异常总结

    java.lang.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。 java.lang.IllegalAccessError 违法访问...

    杰普学习corejava总结笔记

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

Global site tag (gtag.js) - Google Analytics