《Java编程思想》读书笔记——数组

Java编程思想数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。

P433

数组是第一级对象

无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。可以作为数组初始化语法的一部分隐式地创建此对象,或者用new表达式显式地创建。只读成员length是数组对象的一部分(事实上,这是唯一一个可以访问的字段或方法),表示此数组对象可以存储多少元素。“[]”语法是访问数组对象唯一的方式。

P434

多维数组

数组中构成矩阵的每个向量都可以具有任意的长度(这被称为粗糙数组)。

P438

Arrays实用功能

如果数组已经排好序了,就可以使用Arrays.binarySearch()执行快速查找。

如果找到了目标,Arrays.binarySearch()产生的返回值等于或大于0。否则,它产生负返回值,表示若要保持数组的排序状态此目标元素所应该插入的位置。这个负值的计算方式是:

“插入点”是指,第一个大于查找对象的元素在数组中的位置。

如果数组包含重复的元素,则无法保证找到的是这些副本中的哪一个。

P456

总结

在Java的初始版本中,尺寸固定的低级数组绝对是必需的,不仅是因为Java的设计者选择在Java中要包含基本类型(也是出于性能方面的考虑),而且还因为那个版本中对容器的支持非常少。因此,在Java的早期版本中,选择包含数组总是合理的。

其后的Java版本对容器的支持得到了明显的改进,并且现在的容器在除了性能之外的各个方面都使得数组相形见绌。

有了额外的自动包装机制和泛型,在容器中持有基本类型就变得易如反掌了,而这也进一步促使你用容器来替换数组。因为泛型可以产生类型安全的容器,因此数组面对这一变化,已经变得毫无优势了。

P457

《Java编程思想》读书笔记——数组》有2个想法

happyhls进行回复 取消回复

您的电子邮箱地址不会被公开。