数组的定义:
- 一维数组的声明方式: type var[]; type[] var;一般使用后者,前者为c/c++语言的书写方法。
(1)声明数组时不能指定其长度(数组中元素的个数)int [] num;
(2)定义数组对象的时候必须指定长度 num = new int[3];
(3)声明和创建数组同时进行int [] num = new int[3];
注意两者的不同:声明和创建数组不同,它是两个过程,只要生成数组对象就要初始化数组长度。
二维数组的声明方式:type[][] var;二维数组对象的定义方式:var = new type[int a][int b];也可以使用:var = new type[int a][];type[0] = new type[int b]...... a代表行数,b代表列数,由于数组空间不是连续分配的,所以每一行的列数可以不同。
二位数组被Java定义为数组的数组,即行数是一个数组(第一个索引指定有几行),列数是一个数组(第二个索引)指定一行中有几个元素-
数组的初始化过程:
(1)动态初始化(定义数组的同时指定数组长度):
一维数组的动态初始化:
int [] num = new int [3];
num[0] = 0 ;
num[1] = 1 ;
num[2] = 2 ;先定义好数组,再为数组的指定元素赋值;数组中只能存放相同类型的元素,所以所赋值必须为指定类型;
二维数组的动态初始化
type [][]num = new type[1][1];
num[0][0] = new type(type value);
num[0][1] = new type(type value);
num[1][0] = new type(type value);
num[1][1] = new type(type value);二维类型的数组,必须首先为行分配引用空间,然后再顺次为每一行分配空间。而且,必须为每个数组元素单独分配空间。**
例如:String[ ][ ] s= new String[2][ ];
s[0]= new String[2];//为第一行分配引用空间
s[1]= new String[2]; //为第二行分配引用空间
s[0][0]= new String("Good");// 为每个数组元素单独分配空间
s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
s[1][0]= new String("to");// 为每个数组元素单独分配空间
s[1][1]= new String("You");// 为每个数组元素单独分配空间
(2)静态初始化:
一维数组的静态初始化
String[] s = {"abc","def","ghj"};
二维数组的静态初始化
int[ ][ ] num={{1,2},{2,3},{3,4,5}};
注意此时的二位数组第一行有2个元素,第二行有2个元素,地三行有3个元素,如果不是一个3行3列的数组。int[][] num = {{1,2},{3,4,5}}; System.out.println(num[0][2]);//ArrayIndexOutOfBoundsException System.out.println(num[1][2]);//5
注意:暂且可以理解为有几层{}就是几维数组;
详细的二维数组初始化过程移步
增强for循环输出数组中的元素:
(1) 循环输出一维数组:
int [] one = {1,2,3,4,4,4};
for(int a : one){
System.out.print(a + " ");
}
(2)循环输出二维数组:
int[][] num = {{1,2},{3,4,5}};
for(int[] a : num1){
for(int b : a){
System.out.println(b);
}
}
数组常用操作:
(1)获取数组的长度:数组对象.length;值等于数组中元素的个数,而最后一个元素的索引值+1;
(2)数组的复制:System.arraycopy(源数组, 从源数组第几个元素开始复制, 目的数组, 从目的数组的第几个元素开始复制, 复制元素的个数)。该方法没有返回值。改变了目的数组中的元素值;注意第几个是索引值加1;
int[][] num1 = new int[2][2];
int[][] num = {{1,2},{3,4,5}};
System.arraycopy(num, 1, num1, 0, 1);
for(int[] a : num1){
for(int b : a){
System.out.println(b);//3,4,5,0,0
}
}
(3)数组的排序Array.sort(数组引用);按照默认方法对数组进行排序,若是int则从大到小排列;
(4)在已排序的数组中查找某个元素:Arrays.binarySearch(数组名)。