这篇文章主要讲解了“Java类变量和成员变量初始化的过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java类变量和成员变量初始化的过程”吧!
一、类的初始化
对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。
类的编译决定了类的初始化过程。
编译器生成的class文件主要对定义在源文件中的类进行了如下的更改:
1) 先按照静态成员变量的定义顺序在类内部声明成员变量。
2) 再按照原java类中对成员变量的初始化顺序进行初始化。
一个java类和编译后的class对应的转换如下:
源文件:
public class Person{ public static String name="张三"; public static int age; static{ age=20; System.out.println("初始化age"); } public static String address; static{ address="北京市"; age=34; } public static void main(String[] args) { System.out.println(name); System.out.println(age); System.out.println(address); } }
当java源代码转换成一个class文件后,其转换成类似下面的代码:
public class Person{ public static String name; public static int age; public static String address; static{ name="张三"; age=20; System.out.println("初始化age"); address="北京市"; age=34; } public static void main(String[] args) { System.out.println(name); System.out.println(age); System.out.println(address); } }
初始化顺序依据转换后对应的class类成员变量的初始化顺序依次执行,所以所有的静态成员变量都是先声明,后执行赋值的,而且赋值的顺序也是依照源代码对静态成员变量初始化的顺序进行的,注意:定义一个成员变量并直接初始化与在静态代码块中进行初始化是等价的,都是依据它们在源代码中定义的顺序进行的。
二、对象的生成
对于对象的生成其初始化过程与类的初始化过程类似,但会增加构造函数阶段,源代码如下:
public class Person{ { name="李四"; age=56; System.out.println("初始化age"); address="上海"; } public String name="张三"; public int age=29; public String address="北京市"; public Person(){ name="赵六"; age=23; address="上海市"; } }
编译器转换成class文件后,会转换成类似下面的代码:
public class Person{ public String name; public int age; public String address; public Person(){ name="李四"; age=56; System.out.println("初始化age"); address="上海"; name="张三"; age=29; address="北京市"; name="赵六"; age=23; address="上海市"; } }
感谢各位的阅读,以上就是“Java类变量和成员变量初始化的过程”的内容了,经过本文的学习后,相信大家对Java类变量和成员变量初始化的过程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!