今天就跟大家聊聊有关init与clinit在Java中有什么不同,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
初始化是对象构造器方法,也就是说在程序执行新一个对象调用该对象类的构造函数方法时才会执行初始化方法,而clinit是类构造器方法,也就是在jvm进行类加载——验证——解析——初始化,中的初始化阶段jvm会调用clinit方法。
init(或>类X { 静态日志日志=LogFactory.getLog ();//& lt; clinit> 私人int x=1;//& lt; init> X () {//& lt; init> } 静态{//& lt; clinit> } }
在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量和其他资源,或者可以从另外一个角度来表达:初始化阶段是执行类构造器
①
{公共类测试 静态{ 我=0;//给变量赋值可以正常编译通过 System.out.print (i);//这句编译器会提示“非法向前引用“; } 静态int i=1; }
②虚拟机会保证在子类的
静态类父母{ 公共静态int=1; 静态{=2;} 静态类子父{延伸 公共静态int B=; } 公共静态void main (String [] args) { System.out.println (Sub.B); } }
③接口中不能使用静态语句块,但仍然有变量初始化的赋值操作,因此接口与类一样都会生成
看完上述内容,你们对init与clinit在Java中有什么不同有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。