final 关键字
1. 数据
声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。
- 对于基本类型,final 使数值不变;
- 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
1 | final int x = 1; |
1. 数据
声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。
1 | final int x = 1; |
Object 类中的方法一览:
1 | public native int hashCode() |
== 判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。
equals() 判断两个对象是否相等。但它一般有两种使用情况:
不要存在多于一个导致类变更的原因(一个类只负责一项职责)
(要在类的职责扩散到无法控制之前,立即重构)
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
引用计数法:
给对象添加一个引用计数器,每一个地方引用它时计数器加1;引用失效时计数器减1.为值为0的对象不可能再被使用.
缺点:
难以解决对象之间循环引用的问题(对象A引用对象B,对象B引用对象A,两个对象无实际意义)
可达性分析算法:
通过一些称为”GC_ROOTS”的对象作为起点,开始向下搜索引用它的对象,这个过程走过的路径即”引用链”.当一个对象到”GC_ROOTS”没有任何引用链相连,证明此对象不存活.
类从加载到虚拟机内存~卸载出内存的生命周期(这些阶段通常是交叉混合进行的):
加载 –> 验证 –> 准备 –> 解析 –> 初始化 –> 使用 –> 卸载
主动引用
五种必须立即对类进行初始化
的情况:
Java NIO(New I/O)是 Java 1.4 中引入的一套新的 I/O API,它与传统的 Java I/O 模型相比具有以下优势:
ArrayList有三种方式来初始化,构造方法源码如下:
1 | /** |