摘要:
Set 不允许元素重复且无序,常用实现有 HashSet、LinkedHashSet 和 TreeSet。 HashSet HashSet 通过 HashMap 实现,HashMap 的 Key 即 HashSet 存储的元素,所有 Key 都使用相同的 Value ,一个名为 PRESENT 的 阅读全文
摘要:
LinkedList 本质是双向链表,与 ArrayList 相比插入和删除速度更快,但随机访问元素很慢。 除继承 AbstractList 外还实现了 Deque 接口,这个接口具有队列和栈的性质。 成员变量都被 transient 修饰,原理和 ArrayList 类似。 LinkedList 阅读全文
摘要:
特点 ArrayList 是容量可变的非线程安全列表,使用数组实现,集合扩容时会创建更大的数组,把原有数组复制到新数组。 // 新容量扩大到原容量的大约1.5倍,右移一位相当于原数值除以2,扩容并不是严格的1.5位 int newCapacity = oldCapacity + (oldCapaci 阅读全文
摘要:
在(静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。 父类静态代码块和静态变量(先声明的先执行) 子类静态代码块和静态变量(先声明的先执行) 父类普通代码块和普通变量(先声明的先执行) 父类构造方法。 子类普通代码块和普通变量(先声明的先执行) 子类构造方法 阅读全文
摘要:
接口和抽象类对实体类进行更高层次的抽象,仅定义公共行为和特征。 语法维度 抽象类 接口 成员变量 无特殊要求 默认 public static final 常量 构造方法 有构造方法,不能实例化 没有构造方法,不能实例化 方法 抽象类可以没有抽象方法,但有抽象方法一定是抽象类。 默认 public 阅读全文
摘要:
访问权限控制符 本类 包内 包外子类 任何地方 public √ √ √ √ protected √ √ √ × 无 √ √ × × private √ × × × protected 基类的 protected 成员是包内可见的,并且对子类可见; 若子类与基类不在同一包中,那么在子类中,子类实例可 阅读全文
摘要:
内部类可对同一包中其他类隐藏,内部类方法可以访问定义这个内部类的作用域中的数据,包括 private 数据。 内部类是一个编译器现象,与虚拟机无关。 编译器会把内部类转换成常规的类文件,用 $ 分隔外部类名与内部类名,其中匿名内部类使用数字编号,虚拟机对此一无所知。 静态内部类: 属于外部类,只加载 阅读全文