java编程思想学习笔记(5)--初始化与清理

第五章~~~,内容有点多,先上图了

这里写图片描述

对象创建过程总结
(假设有个名为Dog的类)

  1. 当首次创建类型Dog的对象时(构造器可以看成静态方法),或者Dog类的静态数据被首次访问时,java解释器必须查找类的路径,定位Dog.class文件
  2. 载入Dog.class文件(会创建Class对象),有关静态初始化的所有动作都会执行,因此静态初始化只在Class对象首次加载的时候进行一次
  3. 当用new Dog()创建对象时,首先将在堆上为Dog()对象分配足够的存储空间
  4. 这块存储空间会被清零,这样就自动将Dog的所有基本类型数据都设置成了默认值,而引用则被置为null。
  5. 执行所有出现于字段定义处的初始化动作
  6. 执行构造器

关于清理的部分,补充一些上次没有写的:

  1. 对象可能不被回收
  2. 垃圾回收不等于“析构”
  3. 垃圾回收只与内存有关

其他的看另一篇博客,Java编程思想学习笔记(5)–垃圾收集器,讲的的比较详细

关于初始化的部分:
类的数据成员的默认值如下:

  • char、byte、short、int、long为0
  • float、double为0.0
  • boolean为false
  • 对象的默认值为null

关于静态数据的初始化,是在类装载时就全部进行初始化的,不过有没有调用,看一个例子

/*
*定义了两个静态成员,当使用其中的一个时,所有的静态变量都进行了初始化
*/
public class StaticInitialValue {
    static String str=ss();  //使用函数进行初始化,方便查看是否初始化了
    static int i=si();
    static String ss(){
        System.out.println("static String initial");
        return "string";
    }
    static int si(){
        System.out.println("static int initial");
        return 0;
    }
    public static void main(String[] args) {
        System.out.println(StaticInitialValue.str);
    }
}

运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值