目录

一、单个类的加载顺序

二、代码

三、输出结果

三、对输出结果的解释

四、类加载的内存图:

一、单个类的加载顺序

1、加载是类

2、产生自己的静态空间 静态属性 静态方法 静态块

执行静态块

3、在堆内存中开辟对象空间

4、加载类的非静态成员 普通属性 普通方法 普通块

执行普通块 执行构造方法

5、将对象空间的地址引用交给   变量来存储

二、代码

public class Demo {private String demo = "普通属性";private static String demoStatic = "静态属性";public Demo() {System.out.println("这是Demo无参构造方法");}{this.test();System.out.println("这是Demo普通的块");}static {testStatic();System.out.println("这是Demo的静态块");}public static void testStatic() {System.out.println(getDemoStatic());System.out.println("这是Demo的静态方法");}public void test() {System.out.println(getDemo());System.out.println("这是Demo的普通方法");}public String getDemo() {return demo;}public static String getDemoStatic() {return demoStatic;}}
public class TestMain {public static void main(String[] args){Demo p = new Demo();}
}

三、输出结果

三、对输出结果的解释

在静态方法中调用了静态属性,在静态块中调用了静态方法 

都能如愿以偿的输出说明了在静态方法之前就加载了属性   

在加载静态方法之前就加载了静态属性------->静态属性产生的比静态方法早

在加载静态块之前就加载了静态方法------>静态方法的产生比静态块早

得出结论:

早------>晚

静态属性    静态方法    静态块

在普通方法中调用了普通属性,在普通块中调用了普通方法 

都能如愿以偿的输出说明了在普通方法之前就加载了属性   

在加载普通方法之前就加载了普通属性------->普通属性产生的比普通方法早

在加载普通块之前就加载了普通方法------>普通方法的产生比普通块早

最后输出了默认的构造方法

得出结论:

早------>晚

普通属性    普通方法    普通块   默认的构造方法

四、类加载的内存图:

对象的创建是在堆内存中

变量是在栈内存中,Demo  d = new Demo();

Demo  d =    的意思是将对象空间的地址引用交给   变量来存储

关于java中类成员的加载顺序相关推荐

  1. Java static作用及加载顺序

    在java中,static可以修饰成员变量.成员方法.代码块.内部类. static修饰成员变量,可以达到全局变量的效果(Java没有全局变量的概念),当一个类定义了static变量,其实就是申请一个 ...

  2. 类的加载顺序和对象的实例化

    直接就在JDK8中用代码来验证吧. import lombok.extern.slf4j.Slf4j;@Slf4j public class Printer {private String s;pub ...

  3. java枚举加载顺序_java 中类的加载顺序(转)

    1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...

  4. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

  5. java静态方法加载顺序_java中类以及方法的加载顺序

    先看下面的代码: public class Test { public static int a =0 ; static { a = 10; System.out.println("静态代码 ...

  6. java类验证和装载顺序_java中类的加载顺序介绍(ClassLoader)

    转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.l ...

  7. java中类的加载顺序

    java中类加载顺序: 1)静态代码块只执行一次:静态代码块首先被初始化 2)构造代码块在每次创建对象都会执行:构造函数都是最后执行的. 3)按照父子类继承关系进行初始化,先执行父类的初始化: 4)程 ...

  8. java中类的加载顺序介绍(ClassLoader)

    1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉 ...

  9. java类加载器顺序_java中类的加载顺序介绍(ClassLoader)

    1.ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉 ...

最新文章

  1. linux shell合并文件命令paste
  2. R-error: 错误: nul character not allowed (line 1)
  3. Lightoj1014【基础题】
  4. 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
  5. python hex 补0_Python保留前导零的二进制到十六进制转换
  6. 支付宝不止怀有“社交梦”,社区金融才是它的野心所在
  7. 电脑运行adb闪退_adb命令调试工具
  8. 洛谷P1014 [NOIP1999 普及组] Cantor 表
  9. Confluence 6 workbox 通知包含了什么
  10. Linux系统中源码包tomcat的管理
  11. 中国计算机类研究生学校排名,2018考研:计算机专业全球院校排名公布,上海交通大学竟排第一?...
  12. linux与电脑ping通配置方法
  13. uniapp苹果无法上架_uniapp无法上架IOS包怎么办
  14. 怎么用计算机管理员删除文件,管理员权限删除,教您如何删除需要管理员权限的文件夹...
  15. 什么是CI/CD,以及我所熟知的CI/CD工具都是有哪些?
  16. m3u8 java_m3u8Download java 下载 m3u8 视频,解密并合并 ts java download m3u8 vide @codeKK Android开源站...
  17. 我的测试工程师之路--测试人员不看后悔
  18. 错误模块名称: KERNELBASE.dll 问题记录
  19. 天视通支持海康威视摄像头吗_海康威视突然做电脑,到底有胜算吗?
  20. 解决Chrome播放视频闪屏黑屏无法播放

热门文章

  1. 数据科学中的陷阱:定性变量的处理
  2. 显著性检测数据集—学习笔记
  3. matlab深度学习——【卷积神经网络】手写字的识别
  4. FFMpeg安装步骤
  5. 链接器工具错误 LNK2005
  6. ensp 防火墙简单配置
  7. 第二十二届高交会昨日开幕,五大亮点抢先关注
  8. 2022年高级性能测试岗面试题【面试必看】
  9. Android设置显示语言
  10. iOS关于地图定位基础(一)