博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五章 - 初始化与清理
阅读量:4612 次
发布时间:2019-06-09

本文共 960 字,大约阅读时间需要 3 分钟。

5.1 用构造器确保初始化

采用构造器来初始化对象, 与类的名字一致, 没有返回值
5.2 方法重载 - 方法名字一样, 形参不一样
5.3 默认构造器 - 编译器默认创建, 一般有其他的构造函数, 编译器就不在自动创建默认构造器
5.4 This 关键字

  • 在方法中使用, 表示对当前方法的对象的引用
  • 在构造函数中调用构造函数,必须置于方法起始处,而且只能调用一次

5.5 清理 : 终结处理和垃圾回收

一旦垃圾回收器准备释放对象占用的存储空间,将首先调用finalize方法, 并在下一次垃圾回收动作发生时,在真正的回收对象占用的内存
如何标记对象死亡 ?
1) 引用计数 - 循环依赖的问题解决不了
2) 可达性分析 - 从栈和静态存储区开始遍历引用
垃圾回收的特点 - 自适应、停止复制、标记清除,分代的
虚拟机其他的优化技术 - JIT : 将程序全部或者部分变异成本地机器码
5.6 成员初始化
Java尽力保证所有的变量在使用前都被恰当的初始化; 对于局部变量, 如果没有初始化,会提示编译错误; 对于成员变量,基本类型有默认的初始值, 对于引用类型, 默认值为Null
5.6.1 指定初始化
可以在成员变量定义处为其赋值
5.7 构造初始化
构造函数仍然无法阻止自动初始化的进行, 会在构造函数调用之前进行默认初始化
5.7.1 初始化顺序
在类的内部, 变量定义的顺序决定了变量的初始化顺序
5.7.2 静态数据初始化
无论创建多少个对象,静态数据都只有一份存储区域
对象的创建过程
1)加载class
2)在堆上为对象分配空间,成员变量为默认值
3) 执行出现于字段定义处的初始化
4) 执行构造器
5.7.3 显示的静态初始化
5.7.4 非静态实例初始化
5.8 数组初始化
定义 :类型后面加上一对空括号;编译器不允许指定数组的大小,这里仅仅是定义了数组的引用,而没有给对象本身分配任何空间
在数组的定义处可以用特殊的表达式 int[] a1 = {1,2}
数组有一个固有成员, length
理解数组的初始化
5.8.1 可变参数列表
5.9 枚举类型
JDK 1.5 之后引入

转载于:https://www.cnblogs.com/mature-mike/p/10100142.html

你可能感兴趣的文章
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
《windows程序设计》获取窗口尺寸(05)
查看>>
【重点突破】——Canvas技术绘制音乐播放器界面
查看>>
监控级联时各个层的PoE交换机怎么选?
查看>>
存储过程
查看>>
ADO.NET--SqlConnection、SqlCommand的学习
查看>>
PCA降维处理
查看>>
random模块
查看>>
CSS3 新属性兼容性测试
查看>>
js闭包
查看>>
Oralce导入数据库出现某一列的值太大
查看>>
Union和Union All 的区别
查看>>
Git的安装和使用教程详解
查看>>