java 静态构造_请问java中构造方法是静态的吗?

首先,这个问题的答案是: java中构造方法不是静态的。但是,构造方法做什么用,运行机制是什么,比知道这个答案更重要。

一、我们先从java的运行机制聊起。程序员编写.java文件后通过jdk提供的javac工具进行编译。编译完成后生成.class字节码文件,这个文件可以被jvm运行。jvm运行这个.class字节码文件的时候,通过类加载器将字节码中的指令存入到jvm开辟的内存中的方法区中,然后通过程序计数器配合执行引擎来执行刚加载进方法区中的这些指令。

二、那么我们知道了java的运行机制,接下来我们聊下类是怎么被加载的。

1.类加载时首先要校验.class文件的正确性,也就是验证这个.class文件是否是java程序。

2.其次,类加载器给类的静态变量分配内存空间,并赋予默认值。

3.之后,类加载器装入该类中引用的其他类

4.再之后,类加载器为之前分配的静态赋指定值,并执行静态代码块

我们发现,在类的加载过程中,静态的部分被创建和执行了,但构造方法没有被执行。那么我们可以得知,静态的部分是早于构造方法执行的。那么,构造方法什么时候执行呢?

结合以上一、二大点,当类被加载完成后,在开始使用类的时候,程序计数器配合执行引擎来执行类的构造方法,创建类的对象。

至此,我们了解了JVM的执行流程和类的加载过程,弄清楚了构造方法和静态的区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值