枚举类、对象与垃圾回收

枚举类

1.早期的枚举类代码通常是用简单的静态常量来表示(也可以通过private将构造器隐藏,其实例变量用public static final修饰),但是由于存在类型不安全、没有命名空间、输出不明确等缺点,所以可用性不高(代码量大)。
2.现在可以直接用关键字enum定义枚举类(和class同一级别),可以实现多个接口,但是它是默认继承的java.lang.Enum类,所以不能显示的继承其他父类;
非抽象枚举类默认使用final修饰,所以枚举类不能定义子类;
构造器只能使用(默认)private;
枚举类的所有实例必须在第一行全部列出。
在这里插入图片描述
3.枚举类和其他类产生对象的方式不同,枚举类的实例只能是枚举值而不是随意通过new产生的对象;由于封装性,我们应该通过方法来控制对成员变量的访问;如果构造器带参数,那么第一行列出枚举值时就要传参。
4.枚举类的接口和其他类基本一样
这段话的意思不太懂

抽象的枚举类还是可以派生子类的;枚举类里定义抽象方法不能用abstract将枚举类定义成抽象类,系统会自动给该枚举类添上abstract

对象与垃圾回收

垃圾回收特点如下在这里插入图片描述
1.对象在内存中的状态分为三种:1.可达状态:有一个以上的变量引用它;2.可恢复状态:没有变量引用它,在被回收之前会用finalize()方法进行资源清理,此时让变量重新引用它就到了可达状态;3.不可达状态:彻底失去引用,之后只能被回收。用流程图理解比较好
在这里插入图片描述

2.强制回收机制:(可能不会立刻进行垃圾回收)在这里插入图片描述
3.垃圾回收前会要清理资源,java会默认用finalize()来清理资源,也可以重新Object类的finalize()成合适的清理资源程序在这里插入图片描述
(第二点:如果占内存非常小,可能垃圾回收机制不想回收它,finalizey也就不一定会调用)

可恢复状态到可达状态就是通过重写finalize实现
4.java对对象的几种引用在这里插入图片描述
引用队列可以保存回收后对象的引用,软引用和弱引用的对象被回收后可以把被回收对象对应的引用放入引用队列;虚引用在对象释放前就把对象对应的引用放入了引用队列,所以可以在对象被回收前采取行动。常量会被系统视为强引用。
对对象使用这几个特殊引用时必须取出对该对象的强引用,不然这些引用的作用失效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值