构造方法,初始化块和静态初始化块

开始学习java,对于构造方法,初始化块和静态初始化块感觉比较迷茫,所以做出一些简单的总结


初始化块构造器的补充,初始化块不能接受任何参数,定义一些所有对象共有属性方法时可以使用初始化块进行初始化。

                 “里面的代码在创建Java对象时执行,而且在构造器之前执行!”,每个对象生成时都会被执行一次

                 例如:

                           

  1. {
  2. System.out.println("通过初始化块初始化sex");
  3. sex = "男";
  4. }

静态初始化块: 使用static定义,当类装载到系统时执行一次,若在静态出是坏块中想初始化变量,只能初始化静态变量 

                        例如:


  1. static {
  2. System.out.println("通过静态初始化块初始化age");
  3. age = 20;//age是静态变量,请看后面的全部代码
  4. }

构造函数:不做更多讲解

  1. public HelloWorld () {
  2. System.out.println("通过构造方法初始化name");
  3. name = "tom";
  4. }

那你知道这三种方式的运放顺序吗??


代码:

  1. public class HelloWorld {
  2. String name; // 声明变量name
  3. String sex; // 声明变量sex
  4. static int age;// 声明静态变量age
  5. // 构造方法
  6. public HelloWorld () {
  7. System.out.println("通过构造方法初始化name");
  8. name = "tom";
  9. }
  10. // 初始化块
  11. {
  12. System.out.println("通过初始化块初始化sex");
  13. sex = "男";
  14. }
  15. // 静态初始化块
  16. static {
  17. System.out.println("通过静态初始化块初始化age");
  18. age = 20;
  19. }
  20. public void show() {
  21. System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
  22. }
  23. public static void main(String[] args) {
  24. // 创建对象
  25. HelloWorld hello = new HelloWorld();
  26. // 调用对象的show方法
  27. hello.show();
  28. }
  29. }





从图我们可以看出:

                       

                      

                                            优先级顺序,静态初始化块>初始化块>构造方法