Think in java 第四章笔记

本文介绍了Java中对象的创建过程及生命周期,包括类加载、初始化等阶段,并探讨了this关键字的作用与用途。此外,还讨论了数组的特性及其在Java中的实现方式。

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

1.第一个自变量传递给方法f(),而且那个自变量是准备操作的那个对象的句柄。Banana.f(a, 1),Banana.f(a,2)这是内部的表达形式。假设我们在一个方法的内部,并希望获得当前对象的句柄。由于那个句柄是编译器"秘密"传递的,所以没有标识符可用。this关键字(注意只能在方法内部使用)可为已调用了其方法的那个对象生成相应的句柄。可象对待其他对象句柄一样对待这个句柄。

public class Leaf {
    private int i = 0;
    Leaf increment() {
      i++;
      return this;
  }

  public static void main(String[] args) {
  Leaf x = new Leaf();
  x.increment().increment().print();
}
}


2.对象的创建过程:

类型为Dog的一个对象首次创建时,或者Dog类的static方法/static字段首次访问时,java解释器必须找到Dog.class(在事先设好的类路径里搜索)。

找到Dog.class后(它会创建一个Class对象),它的所有static初始化模块都会运行。因此,static初始化仅发生一次——在Class对象首次载入的时候。

创建一个new Dog()对象时,Dog对象的构建进程首先会在内存堆里为一个Dog对象分配足够多的存储空间。

这种存储空间会清为零,将Dog中的所有基本类型设为它们的默认值。

进行字段定义时发生的所有初始化都会执行。

执行构建器。这实际可能要进行相当多的操作。


3.首次生成那个类的一个对象时,或者首次访问属于那个类的一个static成员时(即便从未生成那个类的对象)


4.编译器不允许我们告诉它一个数组有多大。数组一旦超过边界,就会产生一个运行期错误,当然,由于需要检查每个数组的访问,所以会消耗一定的时间和多余的代码量,而且没有办法把它关闭。这意味着数组访问可能成为程序效率低下的重要原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值