JAVA简明摘要(九)对象的前世今生(构造器与垃圾收集器)

本文介绍了Java中堆栈的区别,堆用于存储对象和实例变量,而栈则用于方法调用和基本数据类型。详细讲解了构造函数的使用,包括无参构造函数和带参数的构造函数,以及构造函数的调用顺序。此外,还讨论了如何通过this()和super()在构造函数间进行调用,并解释了释放对象引用的三种方式。内容涵盖了对象初始化、构造函数链和内存管理的基础知识。

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

1 堆与栈

栈——方法调用,局部变量,对象引用变量,primitive主数据类型变量。
堆——所有对象,实例变量(保存于所属的对象中)。

2 构造函数

构造函数没有返回类型,名称一定要与类名相同。
构造函数不会被继承。

public Duck()
{}

使用构造函数来初始化对象状态

public class Duck
{
  int size;
  public Duck(int duckSize)
  {
    size = duckSize;
  }
}

最好要有不需参数的构造函数
顺序不同也算参数不同

public class Duck
{
  int size;

  public Duck()
  {
    size = 27;
  }

  public Duck(int duckSize)
  {
    size = duckSize;
  }
}

3 构造函数链

在创建新对象时,所有继承下来的构造函数都会执行。
调用父类构造函数的唯一方法是调用super()。

public class Duck extends Animal
{
  int size;
  public Duck(int duckSize)
  {
    super();
    size = duckSize;
  }
}

若我们未调用super(),编译器会自动帮我们加上super()的调用(无参数版本),即永远先执行父类构造函数。
对super()的调用必须是构造函数的第一个语句。

4 构造函数调用构造函数

使用this()来从某个构造函数调用同一个类的另一个构造函数。
this()只能用在构造函数中,且必须是第一行语句。
super()与this()不可兼得。

5 释放对象的引用

1.引用永久性的离开它的范围。

void go()
{
  Life z = new Life();
}

2.引用被赋值到其他的对象上。

Life z = new Life();
z = new Life();

3.直接将引用设定为null。

Life z = new Life();
z = null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值