黑马程序员技术交流社区

标题: java,类和对象的初始化过程 [打印本页]

作者: 小牛想成为大牛    时间: 2016-11-9 23:54
标题: java,类和对象的初始化过程
/*
* Java类实例化的初始化过程.,如果该类有父类,就先加载父类的。
*   执行顺序:
*   //  先加载静态成员--》静态方法--》静态代码块----》main方法 --》成员变量--》成员方法--》构造代码块---》构造方法
*/
public class Demo extends FuDemo
{
        private static int i = 1;
        public static String sStr = "静态变量";
        public String iStr = "实例变量";

        public Demo(){
                System.out.println("构造方法");
        }

    public static void main(String[] args){
        System.out.println("main");
                System.out.println("---111---");
                Demo d;
                System.out.println("---222---");
                //new Demo();
    }
                     
    {
        // 实例初始化块
        System.out.println("进入实例初始化块");
        System.out.println("实例初始化块中调用变量:" + iStr);  
        System.out.print("实例初始化块中调用方法:");
        iTalk();
    }
    static{
        // 静态初始化块
        System.out.println("进入静态初始化块");  //  111111
        System.out.println("静态初始化块中调用变量:" + sStr);
        System.out.println("静态初始化块中调用方法:");
        sTalk();
    }

    public static void sTalk(){
        // 静态方法在加载静态成员后执行
                System.out.println(sStr);
        System.out.println("静态方法" + "/静态变量值" + (++i));
    }

    public void iTalk(){
        // 实例方法
        System.out.println("实例方法");
    }
}
class Test{
        private static String pstr = "私有化";
        public static String sStr = "静态变量";
        public String iStr = "成员变量";

       
}

作者: Kevin_Ye    时间: 2016-11-10 00:06
感谢分享

作者: shu307856810    时间: 2016-11-10 00:39
大兄弟  可以

作者: 小牛想成为大牛    时间: 2016-11-10 00:55
上面有不对的地方:静态成员变量和静态代码块的加载顺序跟它在类中的先后顺序有关系的,你可以试试。同成员变量和构造代码块




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