【学习笔记】第五章 初始化与清理

本文深入探讨了Java中的方法重载、this关键字、垃圾回收机制、枚举类型等关键概念,并详细解析了这些概念的实际应用及背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.2 方法重载

重载:对于同一操作的不同操作对象的抽象,将方法名保留而更改参数列表的操作,使代码结构更为便捷。

相同方法名,相同参数列表而参数顺序不同的方法也为重载。(一般不这么做)。

以返回值区分重载方法是行不通的。 编译器是无法知道具体是哪个方法被调用。以下代码通不过编译。

class C{
    public void f(){
        System.out.println("f void");
        //Duplicate method f() in type C
    }

    public int f() {
        System.out.println("f int");
    }
}

5.4 this关键字

作用:

  1. 指代对象本身。
  2. 调用类中的其他构造方法。

5.5 清洁:终结处理和垃圾回收

finalize方法

finalize():用于回收对于一些占用特殊内存区域的对象(如调用本地方法,可在finalize中调用对应的方法释放内存)。

finalize与析构函数的区别:
析构函数在对象被清除时调用(一般对象在不再需要时,须被销毁),可以完成收尾工作。
finalize虽然也是在对象销毁时使用,但finalize可能不被调用。因为在内存充足的情况下,垃圾回收机制可能并不启动,也从而也不会调用finalize方法,所以其作为收尾并不可靠,它的作用只是为了回收内存。

垃圾回收器如何工作

如何找到需要回收的对象:
1.为每个对象设置一个计数器,当有引用连接至对象是加一,当引用离开作用域或不指向该对象时减一。问题:循环引用。
2.遍历所有引用,可到达的对象为‘活’的对象,不可达的为需要清除的对象。类似探究图的可达性。

如何回收对象:
jvm采用一种自适应的垃圾回收机制。
停止-复制:将存活对象从当前堆复制到另一个堆并整理。
标记-清扫:将存活对象标记,将没标记的对象清除。
jvm根据当前堆的情况在两种模式之间切换,例如堆中碎片多时切换至停止-复制方式。


5.7 构造器初始化

static成员只有在必要的时刻(类对象被创建,static成员被直接调用)调用(一次)。

静态代码块和非静态代码块在类加载(同上条件)时调用一次。


5.9 枚举类型

enum关键字:

public enum Color{RED, GREEN, BLUE}

Color.values()可以获取所有的枚举,某个枚举对象的ordinal可以返回该对象在枚举类中的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值