java中数组(Array)
2014-02-06
基础类型的数组
基础类型:int,byte,char,double等;
关于数组,几点:
- 数组以
[]标识; - 数组为高级数据类型,需要用
new; - 定义数组长度,
new type[size]; - 初始化赋值,
{},内部以,分隔;
声明和初始化
int[] intArray1 = new int[10];
int[] intArray2 = {1,2,3,4};
操作
对一个数组,可以进行的操作有:
- 复制
- 输出
- 排序
- 查找
- 清零
- 转换为
List
特别说明:这些操作大都已经作为基本的操作,封装在java.util.Arrays类中了。
复制
用到了System.arraycopy方法,示例代码如下:
int[] intArray1 = new int[10];
int[] intArray2 = {1,2,3,4};
System.arraycopy(intArray2, 0, intArray1, 0, 2);
System.out.println();
也可以使用java.util.Arrays类中copyOfRange方法:
int[] intArray2 = {1,2,3,4};
int[] intArray3 = Arrays.copyOfRange(intArray2, 0, 2);
备注:Arrays.copyOfRange()实质调用的也是System.arraycopy()。
输出
Arrays.toString可以直接输出整个数组的内容:
int[] intArray2 = {1,2,3,4,2};
System.out.println(Arrays.toString(intArray2));
排序
排序,调用Arrays.sort(),默认升序排列;本质是快排算法:
int[] intArray2 = {1,2,3,4,2};
Arrays.sort(intArray2);
查找
直接调用Arrays.binarySearch方法即可,但要求,调用此方法之前,必须对整个Array进行排序,即Arrays.sort()方法,否则,得到的结果可能有错;
清零
Arrays.fill(char[] charArray, char singleChar):将整个charArray中所有内容填充为singleChar,通常char:\0表示为空。
转换为List
List<T> Arrays.asList(T... a),将数组a转换为List;
疑问:如何将List转换为数组?List.toArray();
对象的数组
对象的数组,与基础类型的基本一致,包含几点:
- 声明与初始化:
Object[] objArray = new Object[10]; - 复制:
Arrays.copyOf(),本质仍然为System.arraycopy - 输出:
Arrays.binarySearch() - 排序:
Arrays.sort()
数组链表
特别说明,数组链表,本质是链表,只不过其底层采用数组形式实现,即,数组链表对应:连续的存储空间;但,因为数组链表(ArrayList)与数组名称相似,下文将对数组链表进行简要分析。
(doing… ArrayList的创建、操作,特别是,底层实现机制)
参考来源
- Java Tutorials:Arrays
- java.utils.Arrays的源码(利用Maven工具查看)
原文地址:https://ningg.top/java-array/