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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zlp19940327 中级黑马   /  2015-4-16 00:56  /  324 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
        代码块:

        1.它可以定义在某个方法内(局部代码块),也可以定义在类体中(构造代码块);
        2.当它定义在类体中时,当每次实例化此类的对象时,会被执行;
          如果此类同时有构造方法,那么"先执行代码块","后执行构造方法";
        3.代码的作用同构造方法,一般用于做一些初始化的工作。例如:初始化成员变量;
          虽然同构造方法的作用一样,但代码块不能接收参数。所以它没有构造方法使用灵活;
        4.静态代码块:
                1).在代码块之前添加static关键字;
                2).它在第一次实例化此类的对象时,或者第一次访问类中的静态成员时,只执行一次,之后再实例化此类对象时将不再被执行;
                3).如果一个类同时存在"代码块","构造方法","静态代码块",执行顺序:
                                1.静态代码块;(第一次实例化此类对象时会被执行一次)
                                2.代码块;
                                3.构造方法;
                4).静态代码块一般用于初始化静态成员;
                   注意:如果静态代码块访问静态成员变量,那么此变量一定定义在静态代码块之前。否则编译错误;
               
          
*/
class Student
{
        Student(){
                System.out.println("构造方法......");
        }

        {
                System.out.println("代码块......");
        }
       
        static int num = 10;
        static{
                System.out.println("静态代码块...... num = " + num);
        }
       

        void show(){
                System.out.println("show()");
        }
}
class Demo
{
        public static void main(String[] args)
        {

                /*
                Student stu = new Student();
        //        stu.show();
                System.out.println("--------------------");
                Student stu2 = new Student();
                System.out.println("--------------------");
                Student stu3 = new Student();
                */
                //如果只访问静态成员变量,静态代码块是否被执行?会被执行;
                System.out.println(Student.num);
        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马