美文网首页
变量初始化

变量初始化

作者: HELLOWORLD_cb34 | 来源:发表于2017-03-30 16:28 被阅读0次
  • 局部变量不初始化编译报错
  • 类中的字段(成员变量)不初始化会给与默认值
  • 类中的字段初始化在一切之前,在调用构造器前先对变量初始化
  • 先初始化静态变量。再初始化非静态变量,再构造函数
  • 静态初始化只在class对象首次加载的时候进行一次
  • new对象的时候现在堆上分配相应的存储空间,存储空间清零,引用被置为null,再执行所有出现于字段定义处的初始化工作,最后执行构造器
  • 静态块和静态初始化一样只在类加载的时候执行一次
  • 实例初始化类似静态初始化,只是在每次创建新对象的时候都会执行。

初始化过程

  1. 加载直至根基类

  2. 根基类static域初始化,static域中相对应的类被加载,先初始化static变量(使用时初始化一次

    1. 父类--静态变量
    2. 父类--静态初始化块
    3. 子类--静态变量
    4. 子类--静态初始化块
  3. 从父类开始,开始创建对象(堆上分配空间清零),对象中基本类型设为0,对象引用设为null。

  4. 执行所有出现于字段定义处的初始化动作。

  5. 调用基类构造器,构造器中调用子类的重写方法会深入到继承层次结构内部,但是由于域为0或者NULL可能得不到想要的结果(隐式static方法),实例变量依次初始化,执行构造器剩余部分。

    1. 静态初始化完毕后从基类逐步向下初始化
    2. 父类--变量
    3. 父类--初始化块
    4. 父类--构造器
    5. 子类--变量
    6. 子类--初始化块
    7. 子类--构造器
class Glyph {
  void draw() { print("Glyph.draw()"); }
  Glyph() {
    print("Glyph() before draw()");
    draw();
    print("Glyph() after draw()");
  }
}   

class RoundGlyph extends Glyph {
  private int radius = 1;
  RoundGlyph(int r) {
    radius = r;
    print("RoundGlyph.RoundGlyph(), radius = " + radius);
  }
  void draw() {
    print("RoundGlyph.draw(), radius = " + radius);
  }
}   

public class PolyConstructors {
  public static void main(String[] args) {
    new RoundGlyph(5);
  }
} /* Output:
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5



若private static int radius = 1;

Glyph() before draw()
RoundGlyph.draw(), radius = 1
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
*///:~

相关文章

  • 类初始化顺序

    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始...

  • Java 扫盲(1.2)变量

    变量 变量 变量初始化 常量

  • tensorflow运作方式

    定义变量,初始化,一般初始化随机值,或者常值 保存变量 恢复变量 保存部分变量 恢复变量

  • Golang入门一:变量

    变量声明 变量初始化 变量赋值 变量交换 匿名变量

  • 😄C++ -- 变量定义

    变量声明 变量定义 变量初始化 结果

  • java 入门笔记

    变量 java中声明的局部变量(声明在方法,if, while, for)变量必须初始化,未经过初始化的变量直接使...

  • java类初始化机制

    初始化顺序 无继承类初始化 初始化顺序静态变量/静态代码块 -> 成员变量/代码块 -> 构造函数其中,静态变量与...

  • iOS int初始化

    2016.7.13 int类型的变量不初始化,系统会自动初始化为0 string类型的变量不初始化,系统会初始化为...

  • 第二章:保证稳定性和兼容性

    2.7 快速初始化成员变量 C++98:使用 ‘=’ 初始化类中成员变量,成员变量必须满足:① static ② ...

  • 2-2 Go --- 变量的初始化

    变量的初始化:在定义变量的同时给变量赋值。相当变量的定义 和 变量赋值二合为一。初始化变量的几种方法: 一、完整的...

网友评论

      本文标题:变量初始化

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