Java_类与对象04_代码块概述和讲解

1.    代码块:在Java中,使用{}括起来的代码被称为代码块。

2.    根据其位置和声明的不同,可以分为

    局部代码块:局部位置,用于限定变量的生命周期。

    构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。

      作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。

    静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。

      作用:一般是对类进行初始化。

  面试题?

    静态代码块,构造代码块,构造方法的执行顺序?

      静态代码块 -- 构造代码块 -- 构造方法

    静态代码块:只执行一次

    构造代码块:每次调用构造方法都执行

public class Test {
    private String name;
    static String num;

    public static void main(String[] args) {
        Code a = new Code(); // 创建对象时调用无参构造方法
        // Code b = new Code(10); // 创建对象时调用有参的
    }
}

/*结果为
1000
2000
100
200
无参构造方法code
*/
class Code {
    static {
        int a = 1000;
        System.out.println(a);
    }
    // 构造代码块
    {
        int x = 100;
        System.out.println(x);
    }
    // 构造方法
    public Code() {
        System.out.println("无参构造方法code");
    }
    // 构造方法
    public Code(int a) {
        System.out.println("有参code");
    }
    // 构造代码块
    {
        int y = 200;
        System.out.println(y);
    }
    // 静态代码块
    static {
        int b = 2000;
        System.out.println(b);
    }
}
class Fu {
    static {
        System.out.println("静态代码块Fu");
    }
    {
        System.out.println("构造代码块Fu");
    }
    public Fu() {
        System.out.println("构造方法Fu");
    }
}

class Zi extends Fu {
    static {
        System.out.println("静态代码块Zi");
    }
    {
        System.out.println("构造代码块Zi");
    }
    public Zi() {
        System.out.println("构造方法Zi");
    }
}

class ExtendsTest2 {
    public static void main(String[] args) {
        Zi z = new Zi();
    }
}
// 结果:  静态代码块Fu
// 静态代码块Zi
// 构造代码块Fu
// 构造方法Fu
// 构造代码块Zi
// 构造方法Zi

猜你喜欢

转载自www.cnblogs.com/zhaolanqi/p/9234748.html