黑马程序员技术交流社区

标题: Java 构造代码块/静态代码块 [打印本页]

作者: _Water    时间: 2014-4-2 15:17
标题: Java 构造代码块/静态代码块
1.构造代码块:
class Person {  
    private String name;  
    private int age;  
    //构造代码块,给所有对象初始化用  
    {  
        System.out.println("person code run");  
    }  
    //构造函数,给对应对象初始化用  
    Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
}  
作用:
给对象进行初始化,对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应对象初始化;
构造代码块中定义的是不同对象共性的初始化内容。

2.静态代码块:
class Person {  
    private String name;  
    private int age;  
    //静态代码块,给类初始化用  
    static{  
        System.out.println("static code run");  
    }  
    //构造代码块,给所有对象初始化用  
    {  
        System.out.println("person code run");  
    }  
    //构造函数,给对应对象初始化用  
    Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
}  
特点:
随着类的加载而执行,只执行一次,并优先于主函数。

作用:
用于给类进行初始化。
eg:class StaticCode{  
    StaticCode(){                     
        System.out.print("b,");  
    }  
    static {                     //静态代码快,给类初始化  
        System.out.print("a,");  
    }  
    {                            //构造代码块,给对象初始化  
        System.out.print("c,");  
    }  
    StaticCode(int x) {          //构造函数,给对应对象初始化  
        System.out.print("d,");  
    }  
}  
public class java06_06 {  
    public static void main(String[] args) {  
        new StaticCode(4);  
    }  
}  
//执行结果 a,c,d,
作者: 1453149997    时间: 2014-4-2 16:59
请问你的问题在哪里?你的这篇帖子应该归属于“论坛分享”
作者: _Water    时间: 2014-4-2 17:00
1453149997 发表于 2014-4-2 16:59
请问你的问题在哪里?你的这篇帖子应该归属于“论坛分享”

好的,谢谢提醒




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