`
pterodactyl
  • 浏览: 751868 次
  • 性别: 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初始化的顺序如下:

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

20:40 浏览 (730) 评论 (3) 分类: Java 相关推荐 评论
luzl 2008-11-15   回复
引用
父类静态初始化---->子类静态初始化---->父类初始化块---->父类构造方法---->子类初始化块---->子类构造方法
luzl 2008-11-15   回复
Good,Thank you.
penny 2007-05-27   回复
晕,排版好麻烦,在word中好好的,粘到这里就乱了,好郁闷~~
分享到:
评论

相关推荐

    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 编程入门思考

    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怎样实现对数组的复制

    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编码规范总结

    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) 非静态对象的初始化  在创建对象时,对象所在类的所有...

    java深度历险

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

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

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

    JAVA基础知识精华总结

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

    java 异常总结

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

    杰普学习corejava总结笔记

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

    东北大学JAVA 面向对象实验全部实验代码1到6

    大一自己总结的JAVA实验代码,JAVA课程绩点4.0+,没什么问题

    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联想(中文)

    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关键字总结

    一旦引用被初始化指向一个对象,就无法再把它指向另一个对象。 3>final方法:一是把方法锁定,以防止继承类修改它的含义,二是确保继承中使方法行为保持不变,并且不会被覆盖。类中所有的private方法都隐式地指定为是...

Global site tag (gtag.js) - Google Analytics