java jvm 加载类的顺序_由经典面试题看java中类的加载机制

原标题:由经典面试题看java中类的加载机制

1.概述

类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。

由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。

JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 2.类加载器

类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)。

Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar);

Extension:从java.ext.dirs系统属性所指定的目录中加载类库,它的父加载器是Bootstrap;

System:又叫应用类加载器,其父类是Extension。它是应用最广泛的类加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中记载类,是用户自定义加载器的默认父加载器。 3.类加载的过程

下图是我总结的一个java类被jvm加载的过程。

d75809cc6ecd2dfd7d16ade63cf736e0.png 4.子类和父类加载顺序

那么问题来了,如果有一个java类继承了另一个java类,这两个类的内部具体的执行过程是什么呢?

比如下面的面试题:

3bbbeb412e17951f8cf55811e36004cd.png

c202a697c22d563eb979ca1bf299fa25.png public class Tests{ @Test public void test(){ A a= newA(); a.aDisplay(); } }

执行结果: Class B1:static blocks2 Class B2:static blocks3 Class A1:static blocks1 Class A2:static blocks2 Class B:common blocksi=4,j=3 constructorB: i=5,j=4 Class A:common blocksi=3,j=2 constructorA: i=4,j=3 Class A:static void a Display(): i=5,j=3

可能这里面最迷惑人的就是两个成员变量了,一个静态的一个非静态的。

其实他们出现在这是貌似没啥太大意义,父类和子类虽然拥有着同名的成员变量,但是,这些变量都独自存在于各自的类中,并有各自的只。

言归正传,由上面的面试题,我们可以得出下面的规律:

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc

php转java 系列2 Spring boo 链接数据库jdbcJDBC首先创建一个新项目,在创建项目时要注意导入依赖,在项目创建成功后就会看到在 pom.xml 文件中找到,但是如果在创建项目的时候没有导入,就要在pom.xml中手动的添加依赖;o…

php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格

将下载好的PHPExcel文件夹放置在框架中的Vendor目录下,注意目录的结构,按照我的代码来基本上直接引用就能使用,如下图:导出数据代码如下//导出数据表 开始public function product(){$listdb(product)->select();vendor("…

oracle导致的负载高,Oracle 11g 数据库服务器CPU、IO负载高的故障排除流程

使用top查看负载高的进程~ [OSMSRDB]$ toptop - 11:02:43 up 12 days, 17:15, 4 users, load average: 1.50, 0.93, 0.36Tasks: 363 total, 1 running, 362 sleeping, 0 stopped, 0 zombieCpu(s): 1.2%us, 0.3%sy, 0.0%ni, 68.4%id,30.1%wa, 0.0%hi, 0.0%si, 0.0…

清理linux 服务器的命令行,使用Linux上的Magic SysRq键修复冻结的X服务器,清理重新启动并运行其他低级命令 | MOS86...

在Linux中,魔术SysRq键可以直接发送命令到Linux内核。您可以使用它来恢复冻结或干净地重新启动系统,即使没有任何反应。魔术SysRq键是作为Linux键盘驱动程序的一部分实现的 - 只要Linux内核仍在运行,它将会工作。只有内核崩溃才能禁用此组合键…

上海电力大学c语言程序设计章测试,上海电力学院c语言报告:实验8 指针.doc

上海电力学院c语言报告:实验8 指针.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)…

python c语言 数据类型转换,Python类型转换,数据类型转换函数大全

虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 heigh…

新闻发布系统C语言,资讯 | 助力期末之c语言专场圆满结束!

原标题:资讯 | "助力期末"之c语言专场圆满结束!大一生活如白驹过隙,一转眼便来到了期末,相信很多同学都对c语言期末考很在意,但是又不知道考点在哪里,感觉很多知识点都还不太清楚。确实&#xff…

android创建空文件,ADT 更新 eclipse srclayout 文件夹创建时候为空

今天是14-3-9,发现SDK Manager有更新,手贱点了一下。。。然后新建项目src和layout文件夹就成空的了。。。虽然可以手动建立内容,但是感觉很不爽,到处找解决方法,最后在贴吧找到了,内容链接到了eoe&#xff…

html语言循环语句,Scala @功能/语言的HTML文档 - for循环,如果语句等

我正在一个控制器的视图(HTML页面)中,我试图匹配复选框中的“选中”值的列表中。Scala 功能/语言的HTML文档 - for循环,如果语句等我从模型中抓取选定的复选框值(列表A),将它们在控制器中抓取并发送到视图。我还从模型中获取复选框选择/选项/…

百度自动推送html5,百度暂停 JS 代码自动推送功能,代码是否需要删除?

本月上旬末的时候百度站长平台就推送了一则关于:搜索资源平台自动推送暂停使用通知。说到由于升级维护,搜索资源平台链接提交-自动提交-自动推送(JS 代码推送)功能暂时停止使用。并且会在恢复使用时再次通知。由于这条通知是百度通过搜索资源平台发送的站…

html中表格布局还是div布局,Table布局 VS Div+CSS布局,选哪个?

Table布局 和 DivCSS布局的争论,过了7-8年了,今天看到一篇文章《为什么我们不建议用Table布局》,又想发表下自己的见解,供初学《为什么我们不建议用Table布局》节选:Table要比其它html标记占更多的字节。(延迟下载时间…

计算机桌面锁写快捷,电脑如何锁屏幕 锁屏快捷键是什么

锁屏幕是用户们日常生活中的必备玩法,很多玩家们却不知道游戏中应该如何锁屏幕,那么具体应该如何锁屏幕呢?下面小编带大家一起来看下电脑如何锁屏幕吧!电脑怎么锁屏幕?电脑如何锁屏幕?1、首先自然是需要为电脑创建一个密码。点击开始按钮,然后找到控制面板&#…

计算机在军事的应用论文,信息技术论文3000字【军事信息技术论文】

信息技术是20世纪科学技术发展最重大,最辉煌的成就之一,下面是小编为大家精心推荐的军事信息技术论文,希望能够对您有所帮助。军事信息技术论文篇一漫谈信息技术【摘 要】本文研究了信息技术的发展历程,阐述了信息技术的涵义及研究…

计算机组成原理环境配置,计算机组成原理课程设计

《计算机组成原理》实验大纲适用专业:计算机科学与技术(本科)、网络工程(本科)实验学时:16学时学分:0.5学分一、实验课程目的与要求(1) 进一步融会贯通教材内容,掌握计算机各功能模块的工作原理、相互联系和来龙去脉,完…

计算机学业水平测试初中生操作题,初中学业水平考试信息技术考试操作题常见题型及作答方法...

初中信息技术考试操作题常见题型及作答方法牛角寨乡初级中学信息技术考试已经有两年了,通过这两年的考试情况来看,我认为,要想在信息技术考试中取得一个好的成绩,操作题是一个很重要的环节,从这两年的情况来看&#xf…

什么不是预防计算机病毒的方法,预防计算机病毒的方法是什么

对于电脑安全防护,最好的方法是将病毒扼杀在摇篮中,这就需要积极预防病毒,提前发现并查杀病毒。下面就让学习啦小编给大家说说预防计算机病毒的方法是什么吧。预防计算机病毒的方法第一、及时为Windows打补丁为Windows打补丁是很重要的&#…

手机在线测试黄疸软件,在家怎么用手机测黄疸

文章导读新生婴儿遭遇的问题中最普遍的便是黄疸,新生儿黄疸绝大多数都归属于生理性的,不需要独特医治,还可以在医师具体指导下服食用药治疗,在平常一定要多给宝宝晒太阳。有的病人出世以后黄疸指数不比较严重,可是住院…

怎么解决计算机键盘驱动,解决键盘失灵、安装更新键盘驱动方法

怎样重新安装电脑键盘驱动第一步:点击打开“我的电脑”属性选项,选择硬件标签,打开设备管理器,点击打开“键盘选项”默认的键盘驱动是“标准101/102键或Microsoft自然PS/2键盘”。 右键...如何重装键盘驱动操作系统装好之后默认已…

java实现两台计算机的互联,如何用Java语言实现两台计算机之间的文件传输?

最近新学习了Java语言,算是一个小白,想用TCP Socket进行网络编程,使得服务器端接受客户端的文件,但是遇到了一个错误,有人知道该怎么解决吗?//这是服务器端的代码public class UploadServer {public static…

c++ ea 代码 生成_EA公司教AI制作游戏角色,行动流畅自然,全程无需人类介入

想开发出一款爆款游戏,是一件难度极高的事情,不仅要有精妙的内容设计,精致的光影效果,自然的动画建模,还要投入相当多的资金和时间。现在,美国游戏公司艺电(EA)正在与加拿大不列颠哥伦比亚大学(UBC)合作&am…