数组也是一种数据类型
数组是一个固定长度的,包含了相同类型数据的容器。
声明数组:
在声明数组变量时,需要指出数据类型和数组变量的名字。
下面声明了int数组arr:
int[] arr; //int a[];也是可以的
创建数组:
在创建数组的时候,要指明数组的长度
a=new int[5]
访问数组:
创建数组时候 int[]中的数组代表长度,
而访问数组时,[] 中的数组代表数组的角标(index)(基0)
.length方法用于访问一个数组的角标的范围
数组访问角标范围是0到长度-1,超过这个范围,就会编译错误
引用的概念:
和基本数据类型不同
int c = 50; 是将c赋值50
而int []a=int[1];只是创建了一个数组,并让a指向数组
初始化数组:
分配空间与赋值分步进行:
int[] a = new int[2];
//分配了长度是2的数组,但是没有赋值
//没有赋值,那么就会使用默认值 int类型默认值是0
a[0] = 100; //进行赋值
a[1] = 101;
分配空间与赋值同时进行
int[] a = new int[]{100,102,444,836,3236};
二维数组
这是一个一维数组:
int[] a = new int[]{1,2,3,4,5,6};
里面的每一个元素都是int类型的。
这是一个二维数组:
int[][] b = new int[]{
{1,2,3},
{4,5,6},
{7,8,9}
};
里面的元素都是数组,所以说二维数组可以看作存放数组的数组。
不规则数组
又叫锯齿数组是每行长度不一定的二维数组,下面给出一种初始化方法
int[][] ragged_arrays = new int[5][];//只定义了5个数组,每个数组的长度未给出
for(int i=0;i<ragged_arrays.length;i++){
ragged_arrays[i] = new int [i+1];//每个数组长度一次递增
}
Arrays类
Arrays是一个关于数组的工具类,具体详情可以在java说明书中查询,这里介绍集中常用方法,方便进行 排序,查找,复制填充等功能。
copyOfRange(int[] original, int from, int to)
用于进行数组复制
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
int[] b = Arrays.copyOfRange(a, 0, 3);
//复制了 {18, 62, 68}
toString(int[] original);
把数组转化为字符串,方便观察数组内容
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
String content = Arrays.toString(a);
System.out.println(content);
//输出显示:{ 18, 62, 68, 82, 65, 9 }
sort(int[] original);
对数组进行排序(从小到大)
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
Arrays.sort(a);
//a={ 9,18, 62, 65, 68, 82 }
binarySearch(int[] original , int );
对某元素的位置进行查询,使用binarySearch必须先对数组进行排序
有多个相同的元素,查找结果是不确定的
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
Arrays.sort(a); //使用binarySearch之前,必须先使用sort进行排序
System.out.println(Arrays.binarySearch(a, 62));
equals(int[] a , int[] b);
比较两个数组是否相同,输出布尔值
int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
int b[] = new int[] { 18, 62, 68, 82, 65, 8 };
System.out.println(Arrays.equals(a, b));
fill(int[] original , int)
用某元素填充数组
int[] a = new int [3]
Arrays.fill(a, 5);
System.out.println(Arrays.toString(a));
//{ 5, 5, 5 };