Thinking on Java 8
一、switch
switch 是在有限的可能集合中选择,它与 enum 是绝佳的组合,且 enum 的名称能够清楚的表达程序的目的
二、可变参数列表
类似 Python的 *args, **args
应用在参数个数和类型未知的场合,由于所有的类都继承于 Object 类
1 class A {} 2 3 public class VarArgs { 4 static void printArray(Object[] args) { 5 for (Object obj: args) { 6 System.out.print(obj + " "); 7 } 8 System.out.println(); 9 } 10 11 public static void main(String[] args) { 12 printArray(new Object[] {47, (float) 3.14, 11.11}); 13 printArray(new Object[] {"one", "two", "three"}); 14 printArray(new Object[] {new A(), new A(), new A()}); 15 } 16 }
其他. 一些相关知识点
-
封装
将数据和方法包装进类中并把具体实现的方式,其结果是一个同时带特征和行为的数据类型。
-
组合和继承的选择
组合和继承都允许在新类中放置对象,组合是显式的,继承是隐式的。当想在新类中包含一个已有类的功能时,使用组合,而非继承。
-
闭包
是一个可调用的对象,记录了一些信息,这些信息来自创建它的作用域,所以内部类是面向对象的闭包,它不仅包含外围类对象的信息,还自动拥有一个指向外围类对象的引用。
-
在Java中,对象并非总是被垃圾回收
对象可能不被垃圾回收
垃圾回收不等同于析构
垃圾回收只与内存有关
-
Java的 数组复制效果 等同于 Python中数组的深复制