首页 > 技术文章 > java基础

yangmingfeng 2016-01-23 00:49 原文

1.构造函数的作用: 给对应的对象进行初始化。

2.构造代码块:给所有的对象进行统一的初始化。

3.先执行构造代码块,再执行构造函数的作用。

4.构造代码块要注意的细节:
    1. 构造函数 的代码是位于成员变量的显式初始化 语句、构造代码块语句之后执行 的。
    2. 成员变量的显式初始化语句与构造代码块的语句的先后执行顺序是按照当前代码的顺序执行的。
    3. 成员变量的初始化语句和构造代码块的代码其实是在构造函数中完成的。

 

5.class Person{
    //成员位置是不能编写执行语句, 只能用于声明一个变量或者是一个函数。
    public Person(){
        i= 30000000;
        System.out.println("3");
    }
    //构造代码块
    {
        i = 200000000;
        System.out.println("2");
    }
    int i = 100000000;  //显式初始化
}
class Demo5
{
    public static void main(String[] args)
    {
        Person p = new Person();
        System.out.println("i:"+ p.i);  //输出结果是 2   3   30000000
    }
}

6.class Person{
    String name;
    public Person(String n){
        name = n;
    }
    //构造代码块
    {
        System.out.println(name+"哇哇哇哭..");        // null
    }
}
class Demo6
{
    public static void main(String[] args)
    {
        new Person("狗娃");  // 输出         null哇哇哇哭..
    }
}

 

7.class Student2{ 
    String name; //姓名
    static String country = "中国";    // 成员变量使用了static修饰,那么该数据会进去方法区内存中,而且只会存在一份数据。
    public Student2(String name){
        this.name = name;
    }
    public void study(){
        System.out.println("好好学习,为将来可以成为高富帅做准备!!");
    }
}
class Demo9 {
    public static void main(String[] args)
    {
        Student2 s1 = new Student2("张三");
        Student2 s2 = new Student2("李四");
        s1.country = "小日本";
        System.out.println("姓名:"+ s1.name+" 国籍:"+ s1.country); //输出结果             姓名:张三 国籍:小日本
        System.out.println("姓名:"+ s2.name+" 国籍:"+ s2.country);//输出结果              姓名:李四 国籍:小日本
    }
}

 

推荐阅读