长不大的韭菜 2020-05-24 23:59:23 443 收藏
分类专栏: # Java 基础
版权
一. 示例
注意:以下测试时,main()不在Outer中。这一点非常重要,因为main()调用后,JVM会首先加载main所在的类,如果把main()放在Outer中,则无论在main()内写任何代码,JVM一定会优先加载Outer的静态块,这样便干扰了"静态内部类和外部类的加载过程"的测试。
public class Outer {
static {
System.out.println("外部类 静态块 加载");
}
public static class Inner {
static {
System.out.println("内部类 静态块 加载");
}
public static void innerMethod() {
System.out.println("内部类 静态方法 调用");
}
}
public static void outerMethod() {
System.out.println("外部类 静态方法 调用");
}
}
二. 加载静态内部类时,不会加载外部类
调用:
public class Test {
public static void main(String[] args) {
Outer.Inner.innerMethod();
}
}
执行结果:
内部类 静态块 加载
内部类 静态方法 调用
三. 加载外部类时,不会加载静态内部类
调用:
public class Test {
public static void main(String[] args) {
Outer.outerMethod();
}
}
执行结果:
外部类 静态块 加载
外部类 静态方法 调用
————————————————
版权声明:本文为CSDN博主「长不大的韭菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/miaomiao19971215/article/details/106323875