美文网首页
Think In Java(四)初始化

Think In Java(四)初始化

作者: 如雨随行2020 | 来源:发表于2022-01-16 02:08 被阅读0次
    1. 指定初始化
      如果想为某个变量赋初始值,有一种很直接的办法,就是在定义类成员变量的地方为其赋值(在C++里不能这样做,尽管C++的新手们总想这样做)。以下代码片段直接给成员变量赋初值。
    public class InitialValues {
        boolean bool = false;
        char ch = 'x';
        int i = 939;//....
    }
    

    也可以用同样的方法初始化非基本类型的对象。如果Depth是一个类

    class Depth{}
    
    public class Measurement {
        Depth d = new Depth();
        //....
    }
    

    甚至可以通过调用某个方法来提供初值:

    public class MethodInit {
        int i = f();
        int f() {return 11;}
    }
    

    这个方法也可以带有参数,但这些参数必须是已经被初始化了的。

    public class MethodInit2 {
        int i = f();
        int j = g(i);
        int f() { return 11; }
        int g int(int n) { return n * 10; }
    
    1. 构造器初始化(略)

    2. 初始化顺序
      例子:

      public class Initialization {
          Cup cup1 = new Cup(1);
          {
              System.out.println("init statament");
              Cup cup2 = new Cup(2);
          }
          Cup cup3 = new Cup(3);
      
          static Cup cup5 = new Cup(5);
          static {
              System.out.println("static init statament");
              Cup cup4 = new Cup(4);
          }
          static Cup cup6 = new Cup(6);
          public static void main(String[] args) {
              System.out.println("main()");
              Initialization initialization = new Initialization();
              staticInit();
          }
          public Initialization() {
              System.out.println("Initialization()");
              Cup cup7 = new Cup(7);
          }
      
          public static void staticInit() {
              System.out.println("staticInit()");
              Cup cup8 = new Cup(8);
          }
      }
      class Cup {
          public Cup(int i) {
              System.out.println("cup:" + i);
          }
      }
      
      

      输出:

    cup:5
    static init statament
    cup:4
    cup:6
    main()
    cup:1
    init statament
    cup:2
    cup:3
    Initialization()
    cup:7
    staticInit()
    cup:8
    

    总结:1)语句块对初始化顺序没有影响(即有没有大括号不影响顺序)
    2)静态初始化语句—>>main—>>非静态初始化语句—>>构造器。
    3)静态初始化语句只初始化一次
    4)被static修饰的初始化块内都属于静态初始化语句;
    5)没想到吧,加上大括号后还能写除定义成员变量以外的语句

    相关文章

      网友评论

          本文标题:Think In Java(四)初始化

          本文链接:https://www.haomeiwen.com/subject/ehyraltx.html