java 基础知识五 数组

 


数组

    保存的是一组有顺序的、具有相同类型的数据。

    同一个数组中所有数据元素的数据类型都是相同的。

    可以通过数组下标来访问数组,数据元素根据下标的顺序,在内存中按顺序存放


1、数组声明

    符号“[]”说明声明的是一个数组对象 

    ArrayType [ ] ArrayName;  或者ArrayType ArrayName[ ];

2、数组创建

    使用 ArrayType[arraySize] 创建了一个数组并把新创建的数组的引用赋值给变量 ArrayName

    ArrayType [ ] ArrayName = new ArrayType[arraySize];// 使用默认值  arraySize数组长度 固定arraySize

    ArrayType [ ] ArrayName = = {value0, value1, ..., valuek};// 使用初始值

3、数组初始化和使用

    ArrayName[index]  代表数组ArrayNameindex位置的数据

    数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,通过下标查找,也可以通过循环遍历

 

     int[] arr = {1, 2, 3, 4, 5,6,7};// 自动初始化
	int[] arr1 = new int[10]; arr1[0]=1;// 赋值初始化
	可用for循环遍历查找
 		 for(int element:arr)
		        {
		            System.out.println("星期"+element);
		        }
		
			   for(int i=0;i<arr1.length;i++)
		        {
		            System.out.println("星期"+arr1[i]);
		        }

 



4、数组复制

    从指定源数组 fromArray 中复制一个数组,复制从指定的位置 fromIndex 开始,到目标数 toArray,在指定位置 toIndex 结束,复制 length 个元素 

    System.arraycopy(fromArray ,fromIndex,toArray,toIndex,length) 

               //数组复制
			   System.arraycopy(arr, 0, arr1, 0, 5);
			   //循环遍历 使用数组下标  注意下标最大数字为数组长度减一
			   for(int i=0;i<arr1.length;i++)
		        {
		            System.out.println("arr1 "+arr1[i]);
		        }

 

 

 

5、数组排序 


    冒泡排序:比较两个相邻的元素,将值大的元素交换至右端。

    冒泡排序的过程,是把数组元素中较小的看作是较轻,对它进行上浮操作。从底部开始,反复地对数组进行上浮操作 n ,最后得到有序数组 

    N个数字要排序完成,总共进行N-1遍排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少遍,内层控制每一遍的循环次数


                      //冒泡算法
			   		int temp;
			   		// arr.length - 1是为了防止数据越界 
				    for(int i=0;i<arr.length-1;i++){
				    	 //定义每次要比较的数据随着比较的次数的减少而减少
					    for(int j=0;j<arr.length-i-1;j++){
					     //每次比较后,要对每个数组里的元素进行比较,并排序
					    	if(arr[j]>arr[j+1]){
					    		//进行排序
					    		temp=arr[j];
					    		arr[j]=arr[j+1];
					    		arr[j+1]=temp;
					    	}
					  }  
				    }

 

 


选择排序:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

//					    选择算法
					    for(int i=1;i<arr.length;i++){
					    	 //定义每次要比较的数据随着比较的次数的减少而减少
						    for(int j=1;j<arr.length-i-1;j++){
						     //每次比较后,要对每个数组里的元素进行比较,并排序
						    	if(arr[j]>arr[j+1]){
						    		//进行排序
						    		temp=arr[j];
						    		arr[j]=arr[j+1];
						    		arr[j+1]=temp;
						    	}
						}  

 

5、多维数组

    多维数组用多个索引来访问数组元素,它适用于表示表或其他更复杂的内容,多维数组是数组的数组 

    以二维数组举例

    声明

         数据类型[][] 数组名称;

                       数据类型[] 数组名称[];

                       数据类型   数组名称[][];

    初始化

         数据类型[][] 数组名称 = new 数据类型[第一维的长度][第二维的长度];

                       数据类型[][] 数组名称;

                       数组名称 = new 数据类型[第一维的长度][第二维的长度];

    用法和一维数组一样,也即是一位数组的每一个元素都是一维数组

//						    int arr3[][]=new int[3][4];
						    int arr3[][]={{1,2,3},{1,2,3,4},{1,2}};
						    arr3[0][1]=1;
						    arr3[2][1]=2;
						    for(int element[]:arr3)
					        {
						    	for(int el:element){
						    		System.out.println("二维数组  "+el);
						    	}
					        }

 


 

posted @ 2017-02-24 10:46  Vivi17118  阅读(92)  评论(0编辑  收藏  举报