1. 使用goto可以在简化多层循环的跳转。
1. java switch支持int,char,enum三种类型
 * 1. Java有垃圾回收器负责回收无用对象占据的内存资源
 * 2. 对于（并非使用new）获得了一块“特殊”的内存区域（如在native中申请的），
 * 由于垃圾回收器只知道释放那些经由new分配的内存，所以它不知道改如何释放该对象
 * 的这块“特殊”内存。为了应对这种情况，Java允许在类中定义一个名为finalize()的
 * 方法。它的工作原理是一旦垃圾回收器准备好释放对象占用的存储空间，将首先调用其
 * finalize()方法，并且在下一次垃圾回收动作发生时才会真正回收对象占用的内存。
 * 3. 参考android.graphics.Bitmap
1. add：
不建议直接调用finalize();方法，这会导致finalize()执行多次，不便于维护，如果非要这么做，可以定义自己的释放资源的方法（如release(方法)）。
1. 添加 “bin” package
 * 1. 初始化的顺序是：先静态对象（如果用到），自上而下；而后是“非静态”对象，自上而下。
 * 2. 静态成员只有在第一次使用时才会初始化，此后不再初始化。
 * 3. 即使没有显示的使用static关键字，构造器实际上也是静态方法。
 * 1. 可变参数列表实际上是一个数组
 * 2. 可变参数只能放在参数列表的最后
 * 3. 可变参数只能有一个
 * 1. 当出现循环引用时，尽管两个对象的引用都被显示的置为null
 * 但是对象互相还持有引用，他们的引用计数就永远不会为0，即永远
 * 不会被释放。JVM采用了另一种方式：对于任何“活”的对象，一定能
 * 最终追朔到其存活在堆栈或静态存储区之中的引用。由此，如果从堆
 * 栈和静态存储区开始，遍历所有的引用，就能找到所有引用，如此反
 * 复进行，直到“根源于堆栈和静态存储区的引用”所形成的网络全部被
 * 访问为止。
Enumeration示例
 * 1. hasCode跟物理地址没有任何关系
 * 1. 如果子类的构造函数中没有调用父类的构造函数，则java默认调用父类的无参构造函数。
 * 2. 如果父类没有无参构造函数，那么子类的构造函数中必须调用父类的构造函数
 * 3. 父类中没有可见的构造函数时，该父类将不能被继承
 * 类的访问权限
 * 1. public 可以任何地方访问
 * 2. protected 能在子类、包内访问
 * 3. default 包内可访问
 * 4. private 不可访问
 * 
 * 内部类的访问权限
 * 1. public static 可以在任何地方访问并实例化
 * 2. public 可以在任何地方访问但不能实例化
 * ...
 * 
 * public内部类不能实例化，但public接口能实例化是因为
 * 接口的实现就在本地。