大家好,我是鸭哥。
数组是相同类型的、用一个标识符封装在一起的基本类型数据序列或对象序列,是最为常见的数据结构。鸭哥今天想聊聊数组的声明和初始化,它在我们的工作中使用频率最高,但是很多相关知识,很多人却未必了解全貌。
数组变量的创建
Java 中提供了两种数组声明风格,
//首选的方法 dataType[] arrayVar; //一维数组 dataType[][] arrayName; //二维数组 或者 //非首选,来自C/C++语言风格 dataType arrayVar[]; //一维 dataType arrayName[][]; //二维
使用 new 创建数组,
arrayVar = new dataType[size]; arrayName = new dataType[length1][length2];
第一行的代码做了两件事:先是创建了dataType[size] 数组,然后将新创建数组对象的引用赋值给arrayVar,即引用变量 arrayVar 引用了这个数组。
数组的声明和创建可以一条龙完成,这也是我们平时最常用的写法,
dataType arrayVar = new dataType[size];
数组变量的初始化
一维数组和多维数组的初始化方式是类似的,
//一维数组 int arr[] = new int[]{1, 2, 3, 4, 5}; //第一种初始化方法 int arr2[] = {1, 2, 3, 4, 5}; //第二种 String[] myStringArray = new String[]{"a", "b", "c"}; String[] myStringArray = {"a", "b", "c"};
//二维数组 int myArr[][] = new int[][]{{1, 3}, {2, 4}}; int myArr[][] = {{1, 3}, {2, 4}};
对于多维数组,还可以从最高维开始,分别为每一维分配空间,
String s[][] = new String[2][]; //最高维分配引用空间 s[0] = new String[2]; s[1] = new String[3]; s[0][0] = new String("Do"); s[0][1] = new String("you"); s[1][0] = new String("love"); s[1][1] = new String("Java"); s[1][2] = new String("?");
数组常用的操作技巧
整数数组的快捷初始化方法,
- 使用 fill() 方法将指定的 int 值分配给int型数组的每个元素
int[] array = new int[3]; // 填充数组Arrays.fill(array, 8); //等价于array = {8, 8, 8}
- 使用 IntStream 进行初始化
int [] myIntArray = IntStream.range(0, 100).toArray(); //数组中的元素为0到99 int [] myIntArray = IntStream.rangeClosed(0, 100).toArray(); //数组中的元素为0到100 int [] myIntArray = IntStream.of(12,25,36,85,28,96,47).toArray(); //数组元素的顺序与初始化的顺序相同,等价于 myIntArray = {12,25,36,85,28,96,47}; //数组元素从小到大排序 int [] myIntArray = IntStream.of(12,25,36,85,28,96,47).sorted().toArray();
数组的复制,
- Arrays 类的 copyOf() 方法和 copyOfRange() 方法可以实现进行数组的复制
//将arr数组复制给数组newArr,新数组的长度为 5 int[] arr = new int[]{12, 34, 45}; int[] newArr[] = Arrays.copyOf(arr, 5); //将指定范围内的数组元素复制给新数组 int[] arr = new int[]{23, 34, 45, 46, 78}; int newArr[] = Arrays.copyOfRange(arr, 0, 3); //不包括末尾索引对应的元素,新数组的元素为{23, 34, 45}
数组的排序和查找,
- Arrays 类的 sort() 方法可以对数组进行排序;查找数组元素可以通过 binarySearch() 方法,能对排序好的数组进行二分查找法操作
int arr[] = new int[]{4, 25, 10}; Arrays.sort(arr); int index = Arrays.binarySearch(arr, 10); //index = 2,元素在数组中,返回所在位置的索引 int index2 = Arrays.binarySearch(arr, 8); //index1 = -2,数组中不存在查找元素,返回插入点索引的相反数
关于数组声明和初始化的内容就到这里,可能很多知识大家是知道的,但有了鸭哥的复盘,相信大家心中知识点的脉络和层次就更加清晰了。
在评论区聊聊你的思考吧~