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

对象的建立过程(对象的初始化过程)

 

     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栈。

 

总结

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

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

      堆区   专门存储对象


附图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值