java类的初始化
来源:互联网 发布:mac steam 目录 编辑:程序博客网 时间:2024/06/05 16:44
类的初始化过程
public class Person { String name = “张三”; int age = 18; public Person() { name = “李四” age = 28; }}
Person p = new Person()
1、将Person.class文件加载到内存
2、在栈内存之中为p开辟空间
3、在堆内存中为Person对象开辟空间
4、对Person对象的成员变量进行默认初始化:name= null, age = 0
5、对Person对象的成员变量进行显示初始化:name = “张三”,age =18
6、通过构造方法对Person对象的成员变量赋值:name = “李四”, age=28
7、 Person对象初始化完成,将对象地址赋值给p
继承中类的初始化
1、一个类的静态代码块、构造代码块、构造方法的执行流程:
静态代码块>构造代码块>构造方法
构造代码块和构造方法会在调用构造的时候执行
2、静态的内容是随着类的加载而加载,静态代码块的内容会优先执行
3、子类初始化之前会先对父类进行初始化
public class Fu { static { System.out.println(“Fu静态代码块”); } { System.out.println(“Fu构造代码块”); } public Fu () {System.out.println(“Fu的构造函数”); }}public class Zi extends Fu { static { System.out.println(“Zi静态代码块”); } { System.out.println(“Zi构造代码块”); } public Fu () { System.out.println(“Zi的构造函数”); }}public class TestDemo { public static void main(String[] args) { Zi z = new Zi(); }}
在Ziz的时候会先对Zi进行加载,而在对Zi进行加载之前Fu进行加载。类在加载的时候会优先加载静态代码块,而构造代码块和构造方法在调构造的时候才会执行
Fu静态代码块
Zi静态代码块
接下来newZi()会先调用Fu的构造,执行Fu的构造代码块和构造方法,然后调用Zi的构造代码块和构造方法
Fu构造代码块
Fu的构造函数
Zi构造代码块
Zi的构造函数
阅读全文
0 0
- java 类的初始化
- java 类的初始化
- java类的初始化
- Java类的初始化
- JAVA类的初始化
- Java类的初始化
- java 类的初始化
- Java类的初始化
- Java类的初始化
- java类的初始化
- Java类的初始化
- Java类的初始化
- Java类的初始化
- java 类的初始化
- Java类的初始化
- java类的初始化
- java类的初始化
- java 类的初始化
- 带你实现漂亮的滑动卷尺
- [ArcGIS] 空间分析(六) 追踪分析(台风路径)
- 数据结构 第10讲 好玩贪吃蛇——数字矩阵
- 嵌入式开发实践
- 谷歌浏览器跨域
- java类的初始化
- android定时器、消息任务与问题解决
- Wolfram Mathematica v11.2.0 MacOSX 1DVD
- 仿Iphone刘海效果
- 数据库测试的测试点
- iOS label根据显示内容自适应大小
- Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fi
- 深入理解javascript原型链
- Java项目批处理实现方式(Demo)