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

静态代码块(☆☆☆☆☆):
                在方法外面 类里面 static{}
                随着类的加载而执行  只执行一次
                做一些全局初始化的内容
                优先于主方法执行

        面试题:
                class Student {
                        static {
                                System.out.println("Student 静态代码块");
                        }
                       
                        {
                                System.out.println("Student 构造代码块");
                        }
                       
                        public Student() {
                                System.out.println("Student 构造方法");
                        }
                }

                class Demo2_Student {
                        static {
                                System.out.println("Demo2_Student静态代码块");
                        }
                       
                        public static void main(String[] args) {
                                System.out.println("我是main方法");
                               
                                Student s1 = new Student();
                                Student s2 = new Student();
                        }
                }
                /*
                执行结果是:
                        Demo2_Student静态代码块
                        我是main方法
                        Student 静态代码块
                        Student 构造代码块
                        Student 构造方法
                        Student 构造代码块
                        Student 构造方法
                解释:执行main方法前必须先把Demo2_Student类的class文件加载到方法区,"Demo2_Student静态代码块"随着类的加载而执行一次
                        接着执行main方法 "我是main方法" 先执行
                        当执行到Student s1 = new Student();的时候 先把Student类的class文件加载到方法区,"Student 静态代码块"随着类的加载而执行一次
                        接着执行构造代码块"Student 构造代码块",接着执行构造方法"Student 构造方法"
                        当又执行到Student s1 = new Student()的时候,这时候Student类的class文件已经加载到方法区了 不需再再次加载了 所以 "Student 静态代码块" 不会在执行
                        接着执行构造代码块"Student 构造代码块",接着执行构造方法"Student 构造方法"
                */


期望你的回复

1 个回复

倒序浏览
可以的~学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马