java初始化与清理_java基础(初始化和清理)

java语言规范里有这么一句话

Constructor declarations are not members. They are never inherited and therefore are not subject to hiding or overriding.

实例构造器无法被隐藏或覆写,不参与多态,因而可以做静态绑定。从这个意义上可以认为实例构造器是“静态”的,但这种用法与Java语言定义的“静态方法”是两码事

--------------------------------------------------------------------------------------------------------------

疑问结束

java的初始化顺序,贴上一段代码

父类:

5545b6b8f6ad405138b0a942d6ec6c17.png

子类:

ed485bcd2878064e00cd6ada3ac13b70.png

主方法:

4eeea203f98ac2568c589daf32225c09.png

运行结果:

b6bac6ad335c22212c20af1903553df3.png

在没有把初始化的顺序了解透彻的话很容易会理所当然的理解为先执行父类的静态代码块再执行父类的代码块,然后再执行子类的静态代码块再执行子类的代码块,在第一次看到这个程序的时候我也犯了同样的错误,并且在执行父类初始化的时候调用的show方法理所当然的认为是调用了父类的show方法,其实初始化的是子类的对象,调用的是被子类重写的show方法。

得出结论,初始化的顺序:

父类静态变量、 父类静态初始块 (它们的在类中的顺序就决定了它们的初始化顺序,而不是变量一定会优先于初始块)> 子类静态变量 、子类静态初始块 > 父类成员变量 、父类非静态初始块(顺序执行,debug下看到不在代码块中输入成员变量,没有执行到成员变量初始化时,成员变量为null) > 父类构造器 > 子类成员变量 、 子类非静态初始块 (顺序执行)> 子类构造器

清理:

JAVA垃圾回收器负责回收无用对象占据的内存资源。垃圾回收器只释放那些由new分配的内存。

1.对象可能不被垃圾回收

2.垃圾回收至于内存相关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值