第5章 初始化与清理

1. 垃圾回收机制

  a. 引用计数法,每个对象都含有一个引用计数器,当有应用连接到对象时,引用计数+1;当引用离开作用域被置为 null 时,引用计数-1。缺点是,当对象之间存在循环引用时,可能会出现“对象应该被回收,但引用计数不为0”的情况。

  b. 标记-清扫法,从堆栈和静态存储区出发,遍历所有的引用并标记,进而找出所有存活的对象。标记完成后,再开始清理过程,将没有标记的对象释放。

 

2. 类内成员变量编译器会自动赋值,而对于方法的局部变量,编译器并不会自动赋值。

 

3. 数组初始化

  a. int[] a = {1, 2, 3, 4, 5}

  b. 动态分配 a1 = new int[5]

  另外,若执行 a1=a,是引用拷贝

 

4. 可变参数列表

1 static void f(int required, String... trailing) {
2     System.out.print("required: " + required + " ");
3     for (String string : trailing) {
4         System.out.print(string + " ");
5     }
6     System.out.println();
7 }

 

  可以将可变参数看成一个数组。

 

5. 枚举类型

 1 public class SimpleEnumUse {
 2     public enum Spiciness {    // 枚举类型
 3         NOT, MILD, MEDIUM, HOT, FLAMING
 4     }
 5 
 6     public static void main(String[] args) {
 7         // values 返回常量数组
 8         for (Spiciness s : Spiciness.values()) {
 9             // 枚举类型重写了toString方法
10             // ordinal方法返回序号
11             System.out.println(s + ", " + s.ordinal());
12         }
13     }
14 }

 

posted @ 2018-06-13 15:11  Just_for_Myself  阅读(530)  评论(0编辑  收藏