Java变量、Java对象初始化顺序
2020-12-13 03:39
标签:程序 构造函数 静态 数列 com 的区别 http 变量 重载 局部变量与成员变量: 局部变量分为: 行参:在方法签名中定义的局部变量,随方法的结束而凋亡。 成员变量: 静态属性:类加载时初始化,随着类的存在而存在; 非静态属性:随着实例的属性存在而存在; 关于他两的区别: 1.局部变量不可以加static; 2.局部变量不可以加public、protected、private; 3.局部变量必须赋初始值; 4.局部变量存在于栈中; 5.只写了局部变量,成员变量对比懂的。 实例变量与类变量: 实例变量:局部变量、非静态成员变量; 类变量:静态成员变量; 区别: 就是是不是静态的区别; 实例的总是可以引用类的; 涉及到原理的一丢丢: 在JVM中,每个类对应一个class,但是一个类可以创建多个java对象; jvm的类变量只需要一块内存空间; 这个类有几个实例,就要分配几块内存空间。 static可以修饰: 1.只能修饰类里的成员部分; 2.成员部分包括:成员变量;成员方法;内部类;初始化块;内部枚举类。 实例变量初始化的时机: 1.定义变量时 2.非静态初始化块 3.构造方法 4.注意:第1、2种方式比第3种方式更早执行,1、2种方式的执行属性与他们在源程序中的排序相同。 5.第4点是因为下面一点 Java对象初始化顺序: 1.先初始化静态的 2.同静态先初始化父类的 3.静态中先初始化变量,再初始化代码块 4.非静态的也是先变量,再代码块,再构造函数 5.所以初始化顺序可以看下面那张图 6.子类构造器执行体内执行第一行代码使用super显示调用父类构造器,系统将根据super调用里传入的参数列表判断调用哪个构造器 7.子类构造器执行体的第一行代码使用this调用本类中重载的构造器,根据传入参数判断调用哪个本类构造器 8.子类构造器中既没有super调用也没有this调用,系统将会在执行子类构造器前,隐式调用父类无参数的构造器。 9.super和this都只能在构造器中使用,而且super和this都必须作为构造器中的第一行,因此super和this只能调用其中之一,且最多只能调用一次。 Java变量、Java对象初始化顺序 标签:程序 构造函数 静态 数列 com 的区别 http 变量 重载 原文地址:https://www.cnblogs.com/wzdnwyyu/p/11082175.html