黑马程序员技术交流社区
标题:
Java 中 静态代码块的各种总结_各种全
[打印本页]
作者:
Lingxin
时间:
2016-3-27 22:14
标题:
Java 中 静态代码块的各种总结_各种全
静态代码块(☆☆☆☆☆):
在方法外面 类里面 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 构造方法"
*/
期望你的回复
作者:
Man_hui
时间:
2016-3-27 22:34
可以的~学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2