static

static

一、 static修饰符

static可以用来修饰属性、方法和代码块。通常把static修饰的属性和方法称为类属性(类变量)和类方法。不使用static 修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法。

二、类的加载机制

在加载类的过程中, 完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
静态变量也也称作为全局变量,它被static修饰符修饰,与成员变量不同的是,静态变量不依赖于特定的对象实例,而是被所有的实例共享,只要一个类被加载,JVM就会给静态变量分配存储空间,因此就可以通过类名和变量名来访问静态变量。

三、代码的执行顺序

在这里插入图片描述
从上到下:
两个静态修饰变量
两个成员变量
静态的代码块
无参构造方法
静态的成员方法
主函数
创建了实例对象
通过类名调用了静态变量
也可通过对象调用静态成员方法
对象调用成员变量

执行顺序结果:
在这里插入图片描述

四、继承关系下代码执行顺序

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述

这里看出在创建StaticTest这个类对象之前,静态修饰的代码块就已经被jvm给予内存空间。首先执行的是静态的代码块。然后执行主函数,再创建StaticTest这个类对象之后,按照代码逻辑,先调用demo1中的无参,在调用demo2中无参。

这里注意:demo2继承demo1,在调用demo2的无参时会先调用demo1的无参,即父类的无参默认在第一行,再调用子类。

函数的执行得由对象去调用,只是创建对象是无法执行的。

五、总结

程序的执行顺序:
1.加载类,将class文件加载到JVM的内存中[开辟类的内存空间]
加载的时候,所有的static的属性和代码块都会按顺序执行

2.开始执行主函数
所有的方法[static方法和成员方法]必须要调用才会执行

3。创建某个类的对象[开辟对象的内存]
开辟对象的内存空间的时候,所有的成员属性和非静态代码块会按顺序执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值