谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。特别是涉及到static类型的成员。

解决方案 »

  1.   

    没听说Java还有连接这个步骤。连接,在学C语言的时候,听说过。编译,就是把按照Java语法规则编写的文本文件(源码文件)按照一定的规则转换成字节码文件(.class文件)的过程。字节码文件能够被JVM识别,并解释执行。字节码文件的数据结构,是开放的,官方已经制定了标准。装载,就是Java虚拟机将字节码文件的内容,读取到内存当中的过程。
      

  2.   

    Java的运行过程:
    Java源文件(*.java)——>Java编译器——>字节码文件(*.class)——>类装载器——>字节码校检器——>解释器——>操作系统(Windows、Linux等)整个文件Load到内存区,一系列动作之后形成操作系统认识的代码,操作系统找到main方法开始实行。每个解释:
    1、编译:指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件的过程。2、装载:运行JVM字节码的工作是由解释器( java命令 )来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。
    ClassLoader.getSystemClassLoader().loadClass(类)。最终产生一个CLASS对象3、连接:装载后进行验证、预备和解析的过程。
    -- 验证:类在语法等相关的验证
    -- 预备:就是你类中一些变量等等开辟空间的操作
    -- 解析:在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用。4、初始化:我所理解的是代码执行的顺序。他们之间的关系:
    一个类的源文件先编译成字节码文件,然后在执行这类的时候需要做先装载,然后连接,最后初始化。以上个人理解,关于理论问题最怕害人,所以仅供参考。
      

  3.   

    java是动态语言,没有链接这一步骤,只在类加载的过程中有连接过程.
    编译就是将源文件编译为class文件.
    类加载过程分为:加载,连接(又分为验证,准备和解析三步)和初始化,static成员在准备的过程中被分配内存并赋予默认值(位模式全部为0),在初始化的过程通过初始化方法(静态方法,静态块等)被赋予各种程序员想要给予的值.