数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。
P433
数组是第一级对象
无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。可以作为数组初始化语法的一部分隐式地创建此对象,或者用new表达式显式地创建。只读成员length是数组对象的一部分(事实上,这是唯一一个可以访问的字段或方法),表示此数组对象可以存储多少元素。“[]”语法是访问数组对象唯一的方式。
P434
多维数组
数组中构成矩阵的每个向量都可以具有任意的长度(这被称为粗糙数组)。
P438
Arrays实用功能
如果数组已经排好序了,就可以使用Arrays.binarySearch()执行快速查找。
如果找到了目标,Arrays.binarySearch()产生的返回值等于或大于0。否则,它产生负返回值,表示若要保持数组的排序状态此目标元素所应该插入的位置。这个负值的计算方式是:
1 |
- (插入点) - 1 |
“插入点”是指,第一个大于查找对象的元素在数组中的位置。
如果数组包含重复的元素,则无法保证找到的是这些副本中的哪一个。
P456
总结
在Java的初始版本中,尺寸固定的低级数组绝对是必需的,不仅是因为Java的设计者选择在Java中要包含基本类型(也是出于性能方面的考虑),而且还因为那个版本中对容器的支持非常少。因此,在Java的早期版本中,选择包含数组总是合理的。
其后的Java版本对容器的支持得到了明显的改进,并且现在的容器在除了性能之外的各个方面都使得数组相形见绌。
有了额外的自动包装机制和泛型,在容器中持有基本类型就变得易如反掌了,而这也进一步促使你用容器来替换数组。因为泛型可以产生类型安全的容器,因此数组面对这一变化,已经变得毫无优势了。
P457
你这书也看的太慢了,哈哈哈哈哈哈哈哈
@happyhls, 我会加油的。。。