第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  阅读(625)  评论(0)    收藏  举报
编辑推荐:
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
阅读排行:
· 那些年我们一起追过的Java技术,现在真的别再追了!
· 还在手写JSON调教大模型?.NET 9有新玩法
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· 面试时该如何做好自我介绍呢?附带介绍样板示例!!!
· JavaScript 编年史:探索前端界巨变的幕后推手
点击右上角即可分享
微信分享提示