《Java编程思想》 第5章 初始化与清理

第5章 初始化与清理

1、默认情况下编译器会创建一个无参的构造函数,但当手工创建一个后,默认的构造函数将失效。(编译器认为可能是程序员有意不提供无参的构造函数,以免造成错误!
2、重载方法不能使用返回值进行区分。因为有可能存在并没有返回值的函数调用,这样编译器就不知道具体应该调用哪个方法了。
3、在类中的函数,编译器默认将该对象的引用(this)作为第一个参数加入到成员方法的参数列表中。当然也能通过return this;返回该对象。同时,这也可以使用this(args)来在构造器中调用其他构造器,不过只能使用一次,且必须放置在最起始处。
4、垃圾回收器(自适应的、分代的、停止-复制、标记-清扫):Java只在濒临存储空间耗尽时才会对无效对象占用的空间进行清理,甚至直到程序结束,存储空间才因为程序结束而被操作系统收回。
5、finalize():只在收回空间时才被调用,因此其处理过程必须与内存及其收回有关。其只在诸如Java调用了C或其他程序申请内存空间时被使用。且通常在函数的最后调用父类的super.finalize()。
6、变量初始化

  • 函数中的局部变量编译器并不提供默认初始化,因为编译器认为这是程序员的疏忽,如果贸然提供初始化,可能反而造成之后程序的检查困难。
  • 类中成员编译器提供初始化,并初始化为“零”。
  • 当然,Java可以在声明这个变量时直接对其初始化或者调用方法,但C++并不能这么做
  • 静态变量只在被调用或者生成该类任意对象时被初始化。

7、生成类对象的操作顺序:访问静态变量---创建对象操作---静态成员变量初始化---非静态变量初始化---构造函数

8、数组初始化

  • int[] a = {1,2,3,4};
  • int[] a = new int[4];
  • int[] a = new int[]{1,2,3,4};

9、可变参数列表:function(int a, ..., Object... args)。当可变参数部分只包括一个数组时,将自动将其解释为一个数组,可以使用for(Object str : args)对其中元素进行访问;而如果其中还包含其他元素时,对应数组将以整体进行返回。

10、枚举类型,并可通过 .values()可到其所有类型的一个可遍历的对象。同时 .ordinal() 将返回对应的序列号。

public enum Test {
    a(1, "a"),
    b(2, "b"),
    c(3, "c");

    private final int code;
    private final String info;

    Test(int code, String info) {
        this.code = code;
        this.info = info;
    }
    public int code() {
        return this.code;
    }
    public String info() {
        return this.info;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值