class的内容在jvm中的加载顺序
2017-09-25 22:21
211 查看
做个小实验,测试下class中的属性和方法在jvm中的加载顺序如何
package com.java; /** * Created by cc on 2017/9/25. */ public class DemoClass { private static DemoClass demoClass = new DemoClass(); private String s1 = print(); private static String s2 = printStatic(1); private static String s3 = printStatic(2); { System.out.println("我是普通代码块"); } static { System.out.println("我是静态代码块"); } DemoClass() { System.out.println("我是构造方法"); } public static void main(String[] args) { new DemoClass(); } public static class InnerClass{ public int i1 = print(); private static int i2= printStatic(); public int print(){ System.out.println("我是内部类中的成员变量"); return 0; } public static int printStatic(){ System.out.println("我是内部中的静态成员变量"); return 0; } } public String print() { System.out.println("我是成员变量"); return ""; } public static String printStatic(int i) { System.out.println("我是第" + i + "个static成员变量"); return ""; } }
上述代码的运行结果如下:
结论如下:
1.加载顺序:静态>普通>main方法>构造2.排在前面的同等属性或方法先加载
3.属性优于代码块先加载
4.内部类默认不会被加载
!另外若是在用成员变量初始化当前class对象,则会报java.lang.StackOverflowError异常。
相关文章推荐
- java JVM 加载class的顺序
- JVM class加载机制的总结
- JVM加载class原理
- JVM加载class文件的原理浅析
- 描述一下JVM加载class文件的原理机制?
- Jvm加载class文件的原理
- JVM加载class文件的原理机制
- JVM 类加载过程、初始化、主动引用、被动引用、静态初始化块执行顺序
- Jvm加载jar包的顺序
- jvm 静态类及非静态类的变量,方法加载顺序
- JVM加载class文件的原理机制
- 浅谈Html的内容加载及JS执行顺序
- Java - 描述一下JVM加载class文件的原理机制?
- [无异常,才正常] 加载属性文件内容报:Cannot load JDBC driver class ${jdbc.driverClassName}'
- ClassLoader加载顺序
- JVM加载class文件的原理
- Tomcat的class加载的优先顺序一览
- jvm加载class的原理
- JVM加载class文件的原理机制
- JVM加载class文件的原理机制