数组**
概念:具有相同类型数据的线性集合。
数组间可整体赋值,即将一个数组直接赋值给另一个数组
例 int a[];
int b[]=a;
一维数组
1.创建一维数组
1.1 声明一维数组的两种方式
(1) 数组元素类型 数组名字[]
(2)数组元素类型 [] 数组名字
例 int arr[] ;
double[] dou;
1.2 为数组分配内存空间语法格式
数组名字 =new 数组元素类型[数组元素的个数];
例 arr=new int[5]; //数组长度为5
1.3 将数组的声明和内存分配合在一起执行
语法:数组元素类型名 数组名=new 数组元素类型[数组元素的个数]
例: int month[]=new int[12];
2.初始化一维数组
有3种方式
int a[]={1,2,3};
int b[]=new int[] {4,5,6};
int c[]=new int[3];
c[0]=7;
c[1]=8;
c[2]=9;
3.获取数组的长度
可以使用数组对象自带的length属性,语法如下:
arr.length //arr:数组名 length:数组长度属性,返回int值
二维数组中 arr.length返回的是数组的行数,arr[k].length返回的是第k行的列数量
java支持不规则数组,二维数组可为不规则数组
4.使用一维数组
循环输出
二维数组
1.创建二维数组
两种声明方式(可以只声明”行“的长度而不声明”列“的长度)
组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
例 int a[][];
int [][] a;
2.为二维数组分配内存
int a[][];
a=new int[2][4]; //直接分配行和列
int b[][];
b=new int [2][]; //先分配行,不分配列
b[0]=new int[2]; //给第一行分配列
b[1]=new int[2]; //给第二行分配列
3.初始化二维数组
3种方式
int a[][]={{1,2,3},{4,5,6}};
int a[][]=new int[][] {{1,2,3},{4,5,6}};
int a[][]=new int[2][3];
a[0]=new int[] {6,7,8}; //给第行分配一个一维数组
a[1][0]=1; //给第二行第一列赋值为1
a[1][1]=2;
a[1][2]=3;
数组的基本操作
1.遍历数组
循环实现
2.填充和批量替换数组元素
2.1 fill(int[] a,int value )
可将指定的int值分配给int型数组的整个元素
语法:(该方法输出的数组元素值均为value值)
Arrays.fill(int [] a,int value);
//a:要进行元素分配的数组
//value:要存储数组中所有元素的值
例:Arrays.fill(arr,8); //使用同一个值对数组填充
2.2 fill(int [] a,int formIndex,int toIndex,int value)
将指定的int值分配给int型数组指定范围中的每个元素,填充范围从索引formIndex(包括)一直到索引toIndex(不包括),如果formIndex==toIndex,则填充范围为空
语法:
Arrays.fill(int [] a,int formIndex,int toIndex,int value);
//a:要分配的数组
//foemIndex:要使用指定值填充的第一个元素的索引(包含在内)
//toIndex: 要使用指定值填充的最后一个元素的索引(不包括)
//value:要存储在数组所有元素中的值
例:Arrays.fill(arr,1,4,5); //数组中第一个到第四个数组中的值填充成5
如果指定的索引位置大于或等于要进行分配的数组的长度,(此时数组越界异常)报错。
3.复制数组
3.1 copyOf()方法
语法:
Arrays.copyOf(arr,int newlength);
//arr:要进行复制的数组
//newlength:int 型常量,指复制后的新数组的长度,如果新数组长度大于数组arr的长度,则用0填充(根据复制数组 类型来决定填充的值,整型数组用0填充,char型数组用null填充)如果复制后数组长度小于数组arr的长度,则会从 数组arr第一个元素开始截取至满足新数组长度为止
例:int newarr=Arrays.copyOf(arr,5); //复制数组arr
3.2 copyOfRange()方法
语法:
Arrays.copyOfRange(int [] a,int formIndex,int toIndex);
//arr:要进行复制的数组
//formIndex:指定开始复制数组的索引位置,formIndex必须在0至整个整个数组长度之间(包括formIndex这个索 引)
//toIndex: 要复制范围的最后索引,可大于数组长度(不包括toIndex这个索引)
例:int newarr=Arrays.copyOfRange(arr,0,3); //复制数组arr
4.数组的排序
4.1冒泡排序
4.2选择排序
4.3 Arrays.Sort()方法
是升序排序,可直接使用,语法:
Arrays.sort(object) //object被是排序的数组
例:Arrays.sort(arr); //将数组进行排序