数组
- 定义
- 数组是相同类型数据的有序集合。数组元素有序、可重复。
- 特点
- 数组内的元素数据类型一定相同,不能多种数据类型混合。
- 数组长度是确定的,数组一旦被创建,大小就不可以改变。
- 数组中元素可以是任何数据类型,包括基本类型、引用类型。
- 数组使用 new 关键字初始化,属于引用类型,数组是一个对象,数组的每个元素相当于它的成员变量。
一维数组
- 数组的声明和初始化
-
声明有两种方法:
dataType[] arrayRefVar; // 首选的方法 dataType arrayRefVar[]; // 效果相同,但不是首选方法,这个方法来自于C++。
-
初始化
arrayRefVar = new dataType[arraySize];
-
声明和初始化一步完成:
1、动态初始化(包含默认初始化),声明数组为元素分配空间,与赋值的操作分开进行。
dataType[] arrayRefVar = new dataType[arraySize];
例如:
int[] a = new int[6]; a[1] = 1; a[2] = 2;
2、静态初始化,声明数组、为元素分配空间并且赋值(分配空间的同时就显示的赋值了所以不包含默认初始化的隐式赋值)。
dataType[] arrayRefVar = new dataType[]{value0, value1, ..., valuen} dataType[] arrayRefVar = {value0, value1, ..., valuen}
例如:
int[] b = new int[]{1,1,1,}; int[] c = {1,1,1,};
3、默认初始化(被动态初始化所包含)
数组是引用类型,其元素相当于类的实例变量,因此数组一旦分配空间,每个元素都按照实例变量一样的方式被隐式初始化。
- 数组的遍历
- 数组的元素类型和数组的大小都固定,我们通常使用 for 循环或者 增强for循环(For-Each) 遍历数组。
- 数组的使用情景
- 数组作为方法的参数
- 数组作为方法的返回值
- 下面例子中,数组既作为方法的参数,也作为方法的返回值,值得说明的一点是,如果使用普通for循环,需要用 arr.length.fori+TAB 来生成for循环,如果使用增强型for循环,只需要 arr.for+TAB 来生成增强型for循环。(上面这俩是快捷方式)
package com.baidu.www; /** * Created by joker on 2021/12/7. */ public class shuZuTest { public static void main(String[] args) { printShuZu(new int[]{123,234,345}); } public static int[] printShuZu(int[] aaa){ // for (int i : aaa) { // System.out.println(i); // // } for (int i = 0; i < aaa.length; i++) { System.out.println(aaa[i]); } return aaa; } }
多维数组
-
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:
-
动态初始化:
//二维数组 arr 可以看成一个x行y列的数组。 int[][] arr = new int[x][y];
-
静态初始化:
int[][] arr = new int[][]{{1,2},{2,3},{3,4,5,6,7}}
-
遍历:
public static int[][] bianLiErWei(int[][] qqq){ for (int i = 0; i < qqq.length; i++) { for (int i1 = 0; i1 < qqq[i].length; i1++) { System.out.println(qqq[i][i1]); } } return qqq; }
-
使用情景(与一维数组同)
-
数组作为方法的参数
-
数组作为方法的返回值
Arrays类
-
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的,可以直接使用 类名.方法名 调用,也可以使用 对象.方法名 调用。
-
工具类中封装了很多方法,这个类和它的方法我们自己也能写,只不过java已经写好了我们直接调用即可。其实不必过分依赖工具类。如果我们要实现一个功能,完全可以自己写一个。
-
一些方法:
给数组赋值:通过 fill 方法。 对数组排序:通过 sort 方法,按升序。 比较数组:通过 equals 方法比较数组中元素值是否相等。 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
- 稀疏数组
-
定义:
当一个二维数组中大部分元素为 0 或者为同一个值,可以转换为稀疏数组,这杨可以大大节省空间。 -
稀疏数组的处理方式:
记录数组一共有几行、几列、几个与大部分元素不同的值,把具有不同值的元素和行列及值记录在一个小规模的数组中,达到缩小程序规模的目的。 -
稀疏数组的特点:
1、稀疏数组一共有3列。 2、稀疏数组arr[0][1]的值代表原数组的行数,arr[0][2]的值代表原数组的列数,arr[0][3]的值代表原组中所有与大部分元素不同的值。 3、稀疏数组除了第一行外,其余行的第0列的值代表原数组的与大部分元素不同的值的横坐标,第1列的值代表纵坐标,第3列的值代表该元素的值。 注意:在二维数组与稀疏数组之间转换时,最需要注意的是稀疏数组的第一行所有值以及共有3列。
二维数组:
稀疏数组: