数组的创建于访问
s数组的使用过程一般是声明,分配内存,存取
有两种方法声明数组
数据类型 名称[];
数据类型[] 名称;
第二种方法比较常用,因为可以同时声明多个同类型的数组。
声明后还需要使用new方法对其分配内存
int[] array1;
array1=new int[5];
然后就可以用下标(从0开始下标)访问数组元素了。
数组初始化
数组在new分配内存是会自动初始化的。
一种方式是在声明的时候直接初始化
int[] array1={1,2,3,4,5}; //数组长度自动设定为5
另一种方式是逐个初始化
int[] array1;
array1=new int[5];
array1[0]=1;
length实例变量
java中,数组是一种对象,自然就有实例和实例方法,实例变量。数组只有一个实例变量,length
表示数组的长度。比如上面的array1.length的值为5
数组的深入使用:命令行参数和数组拷贝
命令行参数
main()函数带有参数String[] args,用来接受用户输入的参数列表。
args.length表示参数个数,args[0]开始就是参数。
数组拷贝
直接把一个数组变量拷贝给另一个,这时其实两个数组都指向同一个数组
array2=array1;//两个数组都指向原来的array1
如果只是想单纯复制数组值,可以使用System.arraycopy(fromArray,fromIndex,toArray,toIndex,length)
目标数组必须有足够空间来存放数据,否则抛出异常,不会修改该数组。
int[] array1={1,2,3,4,5,6,7,8,9};
int[] array2={10,20,30,40,50,60,70,80,90};
System.arraycopy(array1,0,array2,2,5);
array2 结果如下 10,20,1,2,3,4,5,80,90
数组排序
选择排序(遍历排序),冒泡排序,快速排序
选择排序,n遍遍历,第一遍选出最大(或最小)元素,与第一个元素交换,第二遍从第二个开始选出最大,与第二个元素交换。效率较低,编码简单。
冒泡排序,把数组元素较轻的上浮。最常用的排序方法。
快速排序,效率很高,最有名的排序法。算法复杂。
多维数组
int[][] twoD=new int[2][3];
twoD={
{1,2,3},
{4,5,6}
};
多维数组的实现
java中,其实只有一维数组,二维其实是将数组类型变量指向一个一维数组
int[][] twoD=new int[5][6];
twoD有5个元素,每个元素都是一个拥有6个整数的数组。
twoD指向第i个子数组,我们甚至可以把它赋值给另一个类型和长度相同的数组。
不规则数组
数组的行数在声明是必须确定,列数待定
int[][] twoD=new int[4][];
twoD[0]=new int[1];
twoD[1]=new int[2];
twoD[2]=new int[3];
twoD[3]=new int[4];
数组如下
1
2 3
4 5 6
7 8 9 0
for-each循环,java中集合常用
for(数据类型 变量:集合)
语句块;
其实就是把集合的元素逐个读取到冒号前的变量中,然后执行语句块,再读取下一个元素到变量中。
int[] nums={1,2,3,4,5};
int sum=0;
for(int i:nums)
sum+=i;
for-each操作二维数组
int[][] nums=new int[5][5];
for(int[]array:nums)
for(int i:array)
//对元素操作
|
|