java初始化相关知识

Java 初始化相关

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

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

    数据类型默认值
    booleanfalse
    char
    byte0
    short0
    int0
    float0
    long0
    float0.0
    double0.0
    referencenull
  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的成员只会初始化一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值