您的位置:首页 > 编程语言 > Java开发

JAVA基础知识再学习(2)对象的初始化过程 & 对象的调用过程

2014-08-29 17:09 671 查看
对象的建立过程(对象的初始化过程)

 

     Person p = newPerson();

 

在执行到new时,

   第一步,会通过Java虚拟机把Person.class从内存加载到内存。

   第二步,执行类静态代码块。(Static{  })

   第三步,开辟 对象堆内存空间,分配内存地址。(就是new,要知道new就是开辟对象内存空间)

   第四步,将对象属性放到对象内存空间,默初始化。

   第五步,对象属性显示初始化(privateint a =10;)

   第六步,构造代码块初始化。({  } )

   第七步,构造函数初始化。(它有针对性,属于被调用)

   第八步,将内存地址给栈内存的P变量。

 

 

 

 

 

 

对象的调用过程(重点)

 

这理解调用对象之前,要理解一些概念:

  首先  要知道堆 主要存放
对象(实例)


  其次  要理解一个概念方法区

            方法区要  1.存放 所有的类和对象的方法代码(静,非静)。方法参数等。

                                2.静态变量

  最后  要知道栈区的执行过程

            1.基本上一个线程,对应一个栈。栈区中只放变量。

            2.在程序执行时,会在栈区先建立一个main栈,分配main中的变量。

            3.当执行另一个方法时,就会在栈区在开辟一个FUNCTION栈,并分配方法中的变量。

  备注  每个方法中,都有一个变量,叫this。谁调用该方法,this就指向谁。

 

现在执行

               Person p = new Person();1

               p.setName(“lee”);     2   

    

执行1的时候首先创建对象,在创建对象时,对于方法的创建做如下分析:

           第一步在类被加载时,静态变量,静态方法代码被加载到方法区。

           第二步在对象被创建时,普通方法代码被加载到方法区。

 

执行2

           第一步 为方法setName创建

           第二步将方法使用变量存放到方法栈空间

           第三步通过参数为方法变量赋值。

           第四步到方法区中找到方法,并执行。

           第五步 执行内容为为对象属性name赋值Lee

           第六步方法执行完,结束栈,会main栈。

 

总结

      栈中   专门存储变量。栈区相当以一个大栈,每个方法是一个小栈。

      方法区 专门存储方法,静态变量。

      堆区   专门存储对象

附图:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐