黑马程序员技术交流社区

标题: 关于静态内部类的问题 [打印本页]

作者: netboy032    时间: 2012-12-29 11:42
标题: 关于静态内部类的问题
本帖最后由 辛攀 于 2013-1-18 09:45 编辑

在外部类加载初始化的时候,静态内部类会加载初始化吗?如果会的话,那它里面的静态成员会初始化吗,还是等到外部类方法调用静态内部类的时候才初始化?
我这里只想知道关于静态内部类的加载初始化问题,其他的什么普通类的初始化就不要说了。
作者: 罗利华    时间: 2012-12-29 17:43
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

作者: netboy032    时间: 2012-12-30 12:03
修心者 发表于 2012-12-29 17:43
public class Outer {
        public Outer() {
                System.out.println("outer class");

首先先谢谢你的回答啊,不过你能告诉我你要表达的是什么吗?
作者: 全超    时间: 2013-1-16 14:13
当内部类被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);}
                       
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2