java笔记-jvm执行顺序

java加载一般顺序:静态块(静态变量)——>成员变量——>构造方法——>静态方法  。
执行顺序根据静态部分是依赖于类,而不是依赖于对象存在的,所以静态部分的加载优先于对象存在。
       1.静态属性,静态方法声明,静态块。
  2.动态属性,普通方法声明,构造块。
  3.构造方法。
静态:
  当加载一个类时,JVM会根据属性的数据类型第一时间赋默认值(一举生成的)。然后再进行静态属性初始化,并为静态属性分配内存空间, 静态方法的声明,静态块的加载,没有优先级之分,按出现顺序执行 ,静态部分仅仅加载一次。至此为止,必要的类都已经加载完毕,对象就可以被创建了。
普通:
  当new一个对象时,此时会调用构造方法,但是在调用构造方法之前,(此刻静态已经完成,除非被打断而暂停)执行动态属性定义并设置默认值(一举生成的)。然后动态属性 初始化,分配内存,构造块,普通方法声明(只是加载,它不需要初始化,只有调用它时才分配内存,当方法执行完毕后内存立即释放),没有优先级之分,按出现顺序执行 。最后进行构造方法中赋值。当再次创建一个对象,不再执行静态部分,仅仅重复执行普通部分。
  注意:如果存在继承关系,创建对象时,依然会首先进行动态属性进行定义并设默认值,然后父类的构造器才会被调用, 其他一切都是先父类再子类 (因为子类的static初始化可能会依赖于父类成员能否被正确初始化),如果父类还有父类,依次类推,不管你是否打算产生一个该父类的对象,这都是自然发生的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值