A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© netboy032 中级黑马   /  2012-12-29 11:42  /  1639 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 辛攀 于 2013-1-18 09:45 编辑

在外部类加载初始化的时候,静态内部类会加载初始化吗?如果会的话,那它里面的静态成员会初始化吗,还是等到外部类方法调用静态内部类的时候才初始化?
我这里只想知道关于静态内部类的加载初始化问题,其他的什么普通类的初始化就不要说了。

3 个回复

倒序浏览
public class Outer {
        public Outer() {
                System.out.println("outer class");
        }

        static class Inner {
                public Inner() {
                        System.out.println("inner class");
                }
        }
        public static void main(String[] args) {
                Outer outer = new Outer();
                Outer.Inner inner=new Outer.Inner();
        }
}
打印结果:
outer class
inner class
回复 使用道具 举报
修心者 发表于 2012-12-29 17:43
public class Outer {
        public Outer() {
                System.out.println("outer class");

首先先谢谢你的回答啊,不过你能告诉我你要表达的是什么吗?
回复 使用道具 举报
当内部类被static 修饰的时候,内部类就具备static 的特性:随着类(即外部类)的加载而加载,相同内部类中的static 代码块也会随着类(内部类)的加载而加载。
用个简单小程序可以验证一下。
class  InDemo
{
        public static void main(String[] args)
        {
                Out.In.show();
        }
}


class Out
{    private static int x=1;
       
        static class In
        {        private static  int x=2;
                static void show()
                        {System.out.println("x=="+x);}
                       
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马