Java编程思想(十三)
2019-05-25 本文已影响0人
MikeShine
第16章 数组
到现在,你对数组的认识停留在:可以创建组装、通过索引访问、长度不可变。
下面,我们了解一下数组比较高级的东西
16.1 数组为什么特殊
数组、容器这种,都叫做 持有对象 的方式。
但是数组在以下三个方面有优点:
- 效率高。
数组是效率最高的存储和随机访问对象引用序列的方式。数组是一个简单的线性序列,所以效率高,代价就是长度被固定。 - 类型
个人理解就是可以直接存具体的类型,编译器可以检查类型匹配与否。 - 保存基本数据能力
数组可以持有基本数据类型,而没有泛型的容器是不行的。
16.2 数组是第一级对象
这里说了基本类型数组 和 其他对象数组的区别。二者基本没有区别,只是存放的对象不同,其他方法都相同。
16.3 返回一个数组
在 C/C+ 中,在返回数组操作时,由于只能返回指向数组的指针,容易造成内存泄漏,生命周期控制十分困难。
但是在 java 中,由于有辣鸡回收器的存在,所以直接来 “返回一个数组” 就完事了。
16.4 多维数组
直接看代码,在多维数组这里有一个 Arrays.deepToString() 方法。
public static void main(String args[]){
int[][] a ={
{1,2,3},
{4,5,6}
};
System.out.println(Arrays.deepToString(a));
}
16.5 数组与泛型
数组这里基本不会用到泛型。但是书上给出了一个非常特殊的例子,用以说明 java 理论上是支持这种定义方式的。
16.6 创建测试数据
这一小节给出了几种填充数组的方法。用于我们将数据填入数组。
- Arrays.fill() :用一个值填充各个位置
int[] a = new int[6];
Arrays.fill(a,1); // 全部填充 1
Arrays.fill(a,,1,4,2); // 指定位置填 2
- 数据生成器 Generator
看不懂,作者这里提供了非常多的 Generator。
16.7 Arrays 实用功能
这一个小节作者给出了 Arrays类中的一些比较常用的方法。
- System.arraycopy()
这个方法不属于 Array 类,但是用这个复制比 用 for循环快很多。该方法对所有类型进行了重载。
System.arraycopy(i,start,j,start,length) // 4个参数
- Arrays.equals()
比较两个数组是否相等(每个元素都相等)。 - Arrays.sort()
- Arrays.binarySearch()
在有序数组中快速查找,两个参数,目标数组+target
16.8 总结
没啥总结的