目录
Arrays 工具类
equals(int[] a,int[] b) | 判断两个数组是否相等 |
---|---|
toString(int[] a) | 输出数组信息 |
fill(int[] a,int vall) | 将指定的值填充到数组中 |
sort(int[] a) | 对数组进行排序 |
binarySearch(int[] a,int key) | 二分法查找值 |
使用工具类要注意导包
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1,4,3};
int[] b = new int[]{1,3,4};
//判断两个数组是否相等
boolean i = Arrays.equals(a,b);
System.out.println(i);
//输出数组信息
System.out.println(Arrays.toString(a));
//将指定的值填充到数组中
Arrays.fill(b,10);
System.out.println(Arrays.toString(b));
//对数组进行排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//二分法查找值
int[] c = new int[]{-98,-34,0,23,67,89};
int index = Arrays.binarySearch(c,-34);
System.out.println(index);
}
}
输出结果如下:
一维数组
数组属于引用数据类型,创建数组对象会在堆内存汇总开辟一连串的空间
数组的长度一旦确定,就不可以修改
1、一维数组的声明和初始化
对于基本数据类型int
的初始化操作如下
int num; //声明
num = 10; //初始化值
int i = 38; //声明+初始化
数组的初始化分为静态初始化和动态初始化
int[] id; //声明
id = new int[]{12,23,34,45}; //静态初始化
String[] name = new String[3]; //动态初始化
不管是静态还是动态,只要初始化完成,数组的长度就确定了
规定数组长度和规定数组具体值不可以放在一个语句里!!!
不可以 new int[5]{1,2,3,4,5};
2、调用数组指定位置的元素
根据索引完成
String[] name = new String[3];
name[0] = "草莓";
name[1] = "西瓜";
name[2] = "樱桃";
//若有以下代码会报错
//name[3] = "错误";
索引超过数组的长度,会报错:ArrayIndexOutOfBoundsException
3、获取数组的长度
通过数组内的length
属性
System.out.println(name.length); //3
System.out.println(id.length); //4
4、遍历数组
通过使用数组长度,和读取数组元素
for(int i = 0;i < name.length,i ++){
System.out.println(name[i]);
}
5、数组元素的默认初始化值
数组元素的默认初始化值就是元素所属的数据类型的默认初始化值
int[] t = new[4];
for(int i = 0;i < t.length,i ++){
System.out.println(name[i]);
}
输出结果是0 0 0 0
6、数组的内存解析
int[] arr = new int[]{1,2,3};
String[] s = new String[3];
s[1] = "草莓";
s[2] = "西瓜";
内存图如下:
二维数组
二维数组就是指数组中的元素是一维数组,即数组中的元素是一维数组的内存地址值,然后指向一维数组
1、声明和初始化
//静态初始化
int[][] arr = new int[][]{{1,2},{3,4,5},{6,7}};
//动态初始化
//指定外部有3行,内部固定2列,指定内部一维数组的元素个数为2
int[][] arr1 = new int[3][2];
//指定外部有4行,不指定内部一维数组的元素个数
int[][] arr2 = new int[4][];
注意有以下的省略写法,仅在静态初始化中使用
int[] i ={1,2,3};
int[][] ii = {{45,67},{24,5,2}};
//分成两行就会报错
//int[] i;
//i = {1,2,3};
还可以有以下写法,但是不推荐
int[] arr[] = new int[3][];
int arr1[] = new int[2];
2、调用数组指定位置的元素
若未指定内部元素一维数组的值,则输出默认值
int[][] i = new int[][]{{10,11,12},{98,99},{55,56,57}};
System.out.println(i[1][1]); //第二行第二列 99
System.out.println(i[0][1]); //第一行第二列 11
int[][] ii = new int[2][3];
System.out.println(ii[1][2]); //第二行第三列,默认值 0
注意未指定内部一维数组的个数的情况,强行访问会报空指针异常
NullPointerException
int[][] a = new int[2][];
//报错:NullPointerException
//System.out.println(a[1][2]);
a[1] = new int[3];
System.out.println(a[1][2]); //默认值 0
3、获取数组的长度
二维数组的长度是指里面所拥有的元素的个数,即里面所存放的一维数组的内存地址值的个数
因为二维数组里面存放的是一维数组,所以同时还可以访问里面元素的长度
int[][] i = new int[4][10];
System.out.println(i.length); //4
System.out.println(i[2].length); //10
4、遍历数组
因为二维数组里面有一维数组,所以遍历需要双重循环
int[][] a = new int[][]{{10,11,12},{98,99},{55,56,57}};
for(int i = 0;i < a.length; i ++){
for(int j =0;j < a[i].length; j ++){
System.out.print(a[i][j] + " ");
}
System.out.println();
}
5、数组元素的默认初始化值
因为二维数组里面所存放的是一维数组的内存地址值
所以默认初始化值就是地址值
int[][] i = new int[5][6];
System.out.println(i[2]); //数组对象的默认值 地址值
System.out.println(i[2][4]); //int的默认值 0
注意:若初始化时没有规定内部一维数组的长度,则没有初始化值
int[][] a = new int[2][];
//报错:NullPointerException
//System.out.println(a[1][2]);
a[1] = new int[3];
System.out.println(a[1][2]); //默认值 0
6、数组的内存解析
int[][] arr = new int[4][];
arr[1] = new int[]{1,2,3};
arr[2] = new int[4];
arr[2][1] = 30;
内存图如下: