-
数组的结构
-
数据类型[] 变量名 = new 数据类型[数组长度]
-
数组的创建语法
-
先声明再分配空间 例如
int[] atu ; atu = new int[2];
-
声明并分配空间
int[] atu = new int[4] ;
-
声明并赋值(蘩)JVM自己根据{}里面的值来判断数组的长度
int[] atu = new int[]{1,3,31,1,6};
-
声明并赋值(简)显示初始化,注意不能换行
int[] atu = {3 ,423, 32, 2, 3, 2}
-
-
-
数组的复制
-
手动复制 : 利用循环一个一个的复制
int[] a = {4,3,2,1} ; int[] b = new int[4] ; for(int i = 0 ; i < a.length ; i ++ ){ b[i] = a[i] ; }
-
利用JDK自带的方法
- **System.arraycopy(**原数组,原数组起始,新数组,新数组起始,长度);
int[] a = {2,43,46,26,256,24,9}; int[] b = new int[10] ; System.arraycopy(a,0,b,0,a.length);
- java.util.Arrays.copyOf(原数组, 新长度);//返回带有原值的新数组。
int[] a = {2,43,46,26,256,24,9}; int[] b = java.util.Arrays.copyOf( a,6);
-
-
数组的排序
-
冒泡排序: 利用的是双循环,加中间变量来完成
在内循环中,第一次会把最大的,或者最小的放在最边的位置,因此,该元素不需要参与下次的比较
int[] a = {12,213,4211,11,2,21,3} ; for(int i = 0 ; i < a.length-1 ; i++) { //外循环代表循环次数 for(int j = 0 ; j < a.length-i-1; j++) { //内循环控制排序 注意j的取值范围,容易出现空指针异常。 if(a[j] > a[j+1] ) { // 注意要求是升序还是降序,把握好> < int temp = a[j] ; // temp 中间变量 a[j] = a[j + 1]; a[j + 1] = temp ; } } }
-
选择排序
-
第一轮,用下标为零的元素与其他的元素比较,然后把较小的放在下标为零的位置,一轮下来之后,下标为零的元素就是数组中最小的一个元素。
-
因为第一轮的时候,把最小的放在了下标为零的位置,因此,第二轮从下标为1 的位置开始比较,依次类推。
-
当到达最后 的两个元素的时候,元素的比较只需要最后 的两个元素比较,因此,j的取值范围为i+1是最后一个元素的下标最为合适。
int[] a = {12,213,4211,11,2,21,3} ; for(int i = 0 ; i < a.length-1 ; i++) { for(int j = i ; j < a.length-1; j++) { if(a[i] > a[j+1]) { int temp = a[i] ; a[i] = a[j + 1] ; a[j+1] = temp ; //把较小的放在a[i] } } } for(int i = 0 ; i < a.length ; i++) { System.out.println(a[i]); }
-
-
JDK自带的方法排序
java.util.Arrays.sort(数组名) 用法如下
int[] a = {12,213,4211,11,2,21,3} ; java.util.Arrays.sort(a); //升序 for(int i = 0 ; i < a.length ; i++) { System.out.println(a[i]); }
-