A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

long_believe

初级黑马

  • 黑马币:19

  • 帖子:10

  • 精华:0

一 之前看有关视频介绍:
构造方法在创建对象的过程中有隐式的三步:
    1:super()
    2:显示初始化成员变量
    3:执行构造代码块
但是:现在老师讲的顺序是:构造代码块 -->构造方法。
这两种解释有冲突么?到底是怎样的?

二 第三块内存方法区,方法区里面又分为普通方法区好静态区
我想问的是:普通方法是什么时候加载进方法区的?是jvm启动的时候加载进去的还是当程序需要使用的时候才随着相关类的加载而加载?静态区又是怎样的?


6 个回复

倒序浏览
等高人回答~~~
回复 使用道具 举报
都没人理了,哎
回复 使用道具 举报
变量初始化的顺序是默认初始化,显示初始化,构造方法初始化,构造方法初始化的过程中先调用构造代码块,因为子类调用构造方法之前之前要访问父类的构造方法,所以执行顺序是
默认初始化——>显示初始化——>父类构造代码块——>父类构造方法——>子类构造代码块——>子类构造方法
回复 使用道具 举报
类加载器将class文件加载进内存的时候,静态方法随着类的加载而加载进方法区中的静态区,普通方法是在调用的时候才加载进方法区的
回复 使用道具 举报
听视频中讲解的先执行构造代码块 再执行构造方法  
回复 使用道具 举报
既然说了是隐式的,那就是构造代码块完了再构造方法的赋值,不冲突啊

静态方法时类加载时候就加载静态方法去的,成员方法是实例化对象的时候加载进内存的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马