父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。
java静态初始化器对static进行初始化。
所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间。
static变量初始值一定要是常量。static变量中文名叫静态变量。位置静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在。
作用:
对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。
对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内)。
但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。
对于静态成员变量来说,在C++中,在类的定义中以static声明的成员变量属于类变量,也即在所有类实例中共享,与之相对的就是过程变量。
理解的几个特殊加载过程:静态代码块、构造代码块,构造方法。
1、有静态方法先加载,所有的静态方法加载完毕之后进入对象的构建--->初始化行为1
1、执行构造代码块(有的话:{ })--->初始化行为2
2、调用无参构造函数初始化对象--->
执行第一行:super()
调用父类无参数构造函数---一直往上调。如果父类有构造代码块先执行。
注意静态代码是最先加载的,无论多少个父类。
自己多试着 *** 作练习,看看运行结果,加深理解!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)