Java怎么初始化类与对象


这篇文章主要讲解了“Java怎么初始化类与对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么初始化类与对象”吧! 首先,我们先看看下面的代码,这就是很经典的考察方式。
不管你是否能很快速的写出正确的答案,我们先把这个程序放一边,了解一下Java虚拟机初始化的原理。JVM通过加装、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。类型的生命周期如下图所示:
装载和连接必须在初始化之前就要完成。类初始化阶段,主要是为类变量赋予正确的初始值。这里的“正确”初始值指的是程序员希望这个类变量所具备的起始值。一个正确的初始值是通过类变量初始化语句或者静态初始化语句给出的。初始化一个类包含两个步骤:1) 如果类存在直接超类的话,且直接超类还没有被初始化,就先初始化直接超类。2) 如果类存在一个类初始化方法,就执行此方法。那什么时候类会进行初始化呢?Java 虚拟机规范为类的初始化时机做了严格定义:在***主动使用时初始化。那哪些情形才符合***主动使用的标准呢?Java虚拟机规范对此作出了说明,他们分别是:1) 创建类的新实例;2) 调用类的静态方法;3) 操作类或接口的静态字段(final字段除外);4) 调用Java的特定的反射方法;5) 初始化一个类的子类;6) 指定一个类作为Java虚拟机启动时的初始化类。除了以上六种情形以外,所有其它的方式都是被动使用的,不会导致类的初始化。一旦一个类被装载、连接和初始化,它就随时可以使用了。现在我们来关注对象的实例化,对象实例化和初始化是就是对象生命的起始阶段的活动。Java编译器为它编译的每个类都至少生成一个实例初始化方法,即()方法。源代码中的每一个类的构造方法都有一个相对应的()方法。如果类没有明确地声明任何构造方法,编译器则为该类生成一个默认的无参构造方法,这个默认的构造器仅仅调免费云主机域名用父类的无参构造器。一个()方法内包括的代码内容可能有三种:调用另一个() 方法;对实例变量初始化;构造方法体的代码。
如果构造方法是明确地从调用同一个类中的另一个构造方法开始,那它对应的 () 方法体内包括的内容为:
一个对本类的()方法的调用;实现了对应构造方法的方法体的字节码。如果构造方法不是通过调用自身类的其它构造方法开始,并且该对象不是 Object 对象,那 () 法内则包括的内容为:一个父类的()方法的调用;任意实例变量初始化方法的字节码;实现了对应构造方法的方法体的字节码。通过上面的讲解是不是对你理解Java类型的初始化有一定的帮助呢?好,那我们再来分析一下开始的那段代码:到现在你应该大体了解了Java类初始化的原理了吧,那我就留一到练习题吧,写出下列代码的运行结果。感谢各位的阅读,以上就是“Java怎么初始化类与对象”的内容了,经过本文的学习后,相信大家对Java怎么初始化类与对象这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: Python Unittest ddt数据驱动如何实现

本篇内容主要讲解“PythonUnittestddt数据驱动如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PythonUnittestddt数据驱动如何实现”吧!@ddt.ddt(类装饰器,申明当前类使用d…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/02 10:19
Next 07/02 10:20

相关推荐