java中类的加载情况
当一个类存在继承且与其他类有关联情况时,类中各模块加载顺序如下:
1.首先找到public类,判断该类是否继承其他类,如果没有继承其他类(Object类除外),则加载该类;否则转去加载该类的超类,超类情况于此等同,加载类情况如下:
1)首先按顺序加载该类中被static修饰的成员变量和代码块。
2)返回到该类的子类中去加载类中被static修饰的成员变量和代码块。
3)顺序执行public类的main()方法中的代码。遇到new关键字转去对应类。
4)转到对应类后首先执行初始化该类的成员变量,若成员变量为对象则转到该对象的类中执行相同操作。
5)成员变量执行完毕后加载构造器设置成员变量值。
测试代码如下:
public class Test extends superTest{
static{
System.out.println(3);
}
private ssuperTest ssu=new ssuperTest();
public static void main(String[] args) {
new Test();
}
}
class superTest extends ssuperTest{
static{
System.out.println(2);
}
public superTest(){
System.out.println(7);
}
}
class ssuperTest{
private memberClass m=new memberClass();
static{
System.out.println(1);
}
public ssuperTest(){
System.out.println(6);
}
}
class memberClass{
static{
System.out.println(4);
}
public memberClass(){
System.out.println(5);
}
}
执行结果为:1 2 3 4 5 6 7 5 6
java中类的加载情况的更多相关文章
- Java中类的加载、连接和初始化
Java中类的加载.连接和初始化 类的加载.连接和初始化 先介绍一下JVM和类 JVM和类: 当我们调用Java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多 ...
- java 中类的加载顺序(转)
1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...
- 从经典面试题看java中类的加载机制
1.概述 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助. 由于Ja ...
- Java 中类的加载顺序
如果类A和类B中有静态变量,静态语句块,非静态变量,非静态语句块,构造函数,静态方法,非静态方法,同时类A继承类B,请问当实例化A时,类内部的加载顺序是什么? 测试代码如下: Class B: pub ...
- java中类的加载顺序介绍(ClassLoader)
转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java. ...
- java中类的加载过程和对象的创建过程
1.类加载过程 首先,jvm在执行时,遇到一个新的类,会先去内存的方法区中去寻找该类的.class文件,如果找到了就直接运行,如果没有找到,则会去硬盘中去寻找该类的.class文件,并将该类文件加载到 ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- Java类的加载、链接和初始化
一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...
- java 类的加载,链接,初始化
本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...
随机推荐
- C语言 指针小结
指针 -->指针变量 类型名 *变量名 int *point1; char *point2; 注意:*p可以直接使用,它代表指针p指向的变量,*p可以当做被指向的变量使用!~~~~ 一个变量的地 ...
- javascript学习笔记之array.sort
arrayName.sort()方法: 功能是实现排序(按ascii编码或按数字大小),可无参或有参使用,无参时默认升序排列.有参时可实现升序或降序排列,参数必须是具有返回值的方法,当方法表达式大于0 ...
- angular1.x的简单介绍 (一)
angular1.x作为经典的mvc框架,可以创建能够复用的组件,也可进行双向数据绑定.国内的vue.js/avaloon.js都是同类型的框架.适合使用angularjs的项目有大型信息化管理系统: ...
- webform简单、复合控件
简单控件: 1.Label 会被编译成span标签 属性: Text:文本内容 CssClass:CSS样式 Enlabled:是否可用 Visible:是否可见 2.Literal 空的,C#会把里 ...
- 视图views粗略理解
>>>>>> >>>> 创建视图: create view goodsavgview as select cat_id,avg(shop_ ...
- PHP环境搭建
1.安装wampserver,安装成功后浏览器中输入:localhost可以打开下面的页面 2.想配置本机IP打开文件的话,单击wampserver-Apache-httped.conf,打开文件,修 ...
- SVN
你先在本地把包删了,然后提交上级目录就可以了.比如你要删除com.aaa.A这个类.你就把A删了,然后提交aaa就行,如果你要把aaa包删了,你就删了以后提交com这个包.SVN就删掉了 svn提交更 ...
- 利用DNS Zone Transfers漏洞工具dnswalk
利用DNS Zone Transfers漏洞工具dnswalk DNS Zone Transfers(DNS区域传输)是指一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.当主服 ...
- 浩瀚科技 定制现场无线手持打印PDA手持终端扫描条码开单解决方案
PDA通过扫描商品条码移动开单,实现便携式办公,伴随式销售,是深圳市浩瀚技术有限公司的一款最新安卓微POS产品,PDA能通过WIFI无线局域网.GPRS互联网直接与主机电脑连接,让公司业务人员能随时随 ...
- java.lang.OutOfMemoryError: PermGen space错误解决方法
1. MyEclipse 中报 PermGen space window--> preferences-->Myclipse-->Servers-->Tomcat- ...