您的位置:首页 > 编程语言 > Java开发

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

2017-03-23 10:54 369 查看
第五章~~~,内容有点多,先上图了



对象创建过程总结

(假设有个名为Dog的类)

当首次创建类型Dog的对象时(构造器可以看成静态方法),或者Dog类的静态数据被首次访问时,java解释器必须查找类的路径,定位Dog.class文件

载入Dog.class文件(会创建Class对象),有关静态初始化的所有动作都会执行,因此静态初始化只在Class对象首次加载的时候进行一次

当用new Dog()创建对象时,首先将在堆上为Dog()对象分配足够的存储空间

这块存储空间会被清零,这样就自动将Dog的所有基本类型数据都设置成了默认值,而引用则被置为null。

执行所有出现于字段定义处的初始化动作

执行构造器

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

对象可能不被回收

垃圾回收不等于“析构”

垃圾回收只与内存有关

其他的看另一篇博客,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);
}
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 对象的初始化