java初始化相关知识

Java 初始化相关

本博客参考《thinking in java》第四版的第五章的相关内容

  1. 局部变量基本数据类型:如果一个基本数据类型的变量在声明后没有进行初始化而被使用,那么会出现一个编译错误。
  2. 类的数据成员数据类型:此时,类的每一个数据成员都会有一个初始值。

    数据类型 默认值
    boolean false
    char
    byte 0
    short 0
    int 0
    float 0
    long 0
    float 0.0
    double 0.0
    reference null
  3. 类数据成员初始化:

    • 声明的同时初始化 : public boolean bool = true;

    • 在构造函数中进行初始化

    • 初始化块中初始化

      {
          i = 10; // 当然i要在你的数据域中进行事先的声明
      }
      
    • 经过试验,类的这几个部分的初始化顺序是先是初始化静态成员变量,然后再是非静态成员变量;而且初始化的顺序先是初始化声明部分,再是初始块部分,最后才是构造函数部分。

    • 总结一下对象的创建过程,假设有一个Dog的类:

      1. 构造器实际上是静态方法,即首次创建Dog对象或者Dog类静态方法/域首次被访问时,java解释器必须查找类路径。
      2. 载入Dog.class,有关静态初始化的所有动作都会执行,因此静态初始化只在Dog对象首次加载时进行一次。
      3. 当用new Dog()创建对象时,首先在堆上为Dog对象分配足够的储存空间。
      4. 这块空间会被清零,即Dog对象中的基本数据类型都会设置为默认值,而引用会被设置为null。
      5. 执行所有出现在字段定义处的初始化动作。
      6. 执行构造器。
  4. 数组的初始化

    • 要定义一个数组,只需要int[] array // 其实现在只是拥有一个数组的引用,并没有给数组分配内存空间

    • 数组的初始化

      array = new int[5]; // 数组的每一个元素都是取得默认值(此处为0),如果array类型不是基本类型,那么将会得到一个引用数组。  
      int[] array2 = {1,2,3};
      
  5. 每个类的编译代码都存在于它自己的独立文件中,该文件只在需要使用程序代码时才会被加载,一般来说,可以认为类的代码在初次使用时才会加载,这通常是指加载发生于创建类的第一个对象时,但是当访问static域或者static方法时,也会发生加载(构造器其实也是static方法,准确来说,类是在任何static成员被访问时加载的)。初次使用之处也是static初始化发生之处,所有的static对象和static代码都会在加载时依程序中的顺序进行初始化。当然,static的成员只会初始化一次。

猜你喜欢

转载自blog.csdn.net/qq_37993487/article/details/79748880
今日推荐