拾忆老特性之try-with-resources

现在 Java 10 都出来了,而还有好多公司都在用着 Java 7 或者 Java 6。说实话就算是 Java 7 ,想必也有很多有用的新特性都没有被用到实际开发中,大部分都是延续着 Java 6 的写法。

比如今天要说(翻译)的 try-with-resources 语句。之前一直都是用 try-catch-finally,前段时间看了一篇讲异常的文章,正好提到了 try-with-res......

协变与逆变

什么是协变与逆变?

协变是指能够使用比原始指定的派生类型的派生程度更大(更具体的)类型。

逆变是指能够使用比原始指定的派生类型的派生程度更小(不太具体的)类型。

大部分语言是支持协变的,比如 C++,C#,Java。但是 Java 并不支持逆变。

Number num = new Integer(1);

Number[] numbers = new Integer[10];//J......

再探 Hash 算法

开篇

先前看到 HashMap 到一些东西,其中 JDK7 和 JDK8 的 hash 方式不同让我很是好奇,虽然已经知道这两个版本间实现的区别是 JDK8 中将链地址法做了优化,将链表改成类红黑树,将查询的复杂度从 O(n) 优化到了 O(logn)。

其实 hash 表这种东西在大学的 数据结构 课程上就已经学过,只是时隔太久,只知道有这样一种很棒的数据结构,但是具体怎么实现,有哪些实现......

再探内部类

开篇

内部类,一个熟悉又陌生的老朋友。到目前为止也没怎么在开发中写过内部类。但是最近在看 JDK 源码的时候,发现内部类使用到的频率非常高,这给我阅读源码带来了不少挑战。所以为了扫清这个障碍,专门复习一下内部类的相关知识。

内部类探索

Java 内部类总共由四种:成员内部类,局部内部类,匿名内部类,静态内部类。

成员内部类

成员内部类是最普通的内部类,定义在一个类的内部。......

JAVA 拾遗之 Vector

概要

上回剖析了 ArrayList 的源码,今天继续来剖析一下两个集合类型的源码 --- Vector。

Vector 类用起来就像数组一样可以使用整数索引来访问容器中的内容。和数组的区别是 Vectror 可以根据需要改变容量,以适应 Vector 创建后进行的添加或者删除元素操作。

Vectror 容器会通过维护 capacity 和 capacityIncrement 来......