初始化块和静态初始化块

来源:互联网 发布:vb.net开发工具 编辑:程序博客网 时间:2024/05/16 09:40

1.为什么要有初始化?

  答:初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块初始化了

    好处是可以提高初始化块的复用,提高整个应用的可维护性

2.有初始化块和静态初始化块的区别?

  答:(1)程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

    (2)静态初始化块只在类加载时执行一次,且只能初始化静态成员变量,不能初始化普通变量 

注:java中没有静态构造函数,通过静态代码块完成类似作用

public class HelloWorld  { 3     String name; // 声明变量name    String sex; // 声明变量sex    static int age;// 声明静态变量age        // 构造方法,手动声明构造方法之后,不论声明的是有参还是无参的构造方法,系统都不会再自动生成无参的构造方法    public HelloWorld () {         System.out.println("通过构造方法初始化name");        name = "tom";    }        // 初始化块    {         System.out.println("通过初始化块初始化sex");        sex = "男";    }        // 静态初始化块,只在类加载的时候初始化一次,且只能初始化静态成员变量,不能初始化普通变量      static  {         System.out.println("通过静态初始化块初始化age");        age = 20;    }        public void show() {        System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);    }        public static void main(String[] args) {                // 创建对象        HelloWorld hello = new HelloWorld();        // 调用对象的show方法        hello.show();        HelloWorld hello1 = new HelloWorld();    }}这是输出结果:通过静态初始化块初始化age通过初始化块初始化sex通过构造方法初始化name姓名:tom,性别:男,年龄:20通过初始化块初始化sex通过构造方法初始化name


0 0
原创粉丝点击