构造代码块与静态代码块
- public class ConstructorBlock {
- /**
- * @param args
- */
- public static void main(String[] args) {
- new Person();
- new Person(10);
- }
- }
- class Person{
- private int age;
-
-
- {
- System.out.println("构造代码块被执行");
- }
-
-
- static{
- System.out.println("静态代码块被执行");
- }
- public Person() {
- super();
- // TODO Auto-generated constructor stub
- }
- public Person(int age) {
- super();
- this.age = age;
- }
-
-
- }
复制代码
运行结果:
静态代码块被执行 //跟随类的加载而加载,但是只调用一次 在加载类的时候调用了一次
构造代码块被执行 //new对象的时候调用,第一次空参对象调用
构造代码块被执行 //第二次new带参的时候,通过super();调用一次
结论:
静态代码块随着类加载而执行,并且只执行一次
构造代码块,只要创建该类的对象,该类的构造代码块就执行 |
|