数组的概念:同一种类型数据的集合。其实数组就是一个容器。
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
数组的两种定义格式:
1.元素类型 [] 数组名 = new 元素类型[ 元素个数或数组长度] 。
例:int [] arr = new arr[5];
2.元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,……元素};
例: int [] arr = new int[]{3,5,1,7};
int [] arr={3,5,1,7}
这中格式可以直接将数组的内容在创建时就已经赋值。
数组操作常见问题
角标越界异常:操作数组时,访问到了数组不存在才角标。
空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
数组遍历
数组中有一个属性可以直接获取到数组元素个数。length.
使用方式:数组名称.length =
System.out.println("length:"+arr.length);
但凡用到遍历时,一般都要用到for循环。
例:int [] arr = new int[]{3,5,1,7};
for(int i=0;i<arr,length;i++){
System.out.println(arr[i]);
}
获取数组中的最值?
个人思路:设置一个空间,遍历数组,将每一个数组都进行比较,最值留在空间内,遍历完剩下的值就是最值。
老师思路:
1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。
通过一个变量进行临储。
2,让数组中的每一个元素都和这个变量中的值进行比较。
如果大于了变量中的值,就用该该变量记录较大值。
3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。
步骤:
1,定义变量。初始化为数组中任意一个元素即可。
2,通过循环语句对数组进行遍历。
3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;
需要定义一个功能来完成。以便提高复用性。
1,明确结果,数组中的最大元素 int。
2,未知内容:一个数组。int[]
数组的排序
选择排序:
原理:将第一个数组的值与后面的比较,最小放在第一个位置上,然后用第二个遍历,遍历完就是从小到大排列的。
定义这个函数功能:
1, 有没有返回值类型?
没有,因为当数组排序完成以后,堆内存中的数组已经排序,直接调用即可。
2, 有没有未知参数:需要被排序的数组
例:
public void selectSort(int [] arr){
for(int x=0;x
arr[y]){
arr[x]=arr[x]+arr[y];
arr[y]=arr[x]-arr[y];
arr[x]=arr[x]-arr[y];
}
}
}
}
冒泡排序:
相邻两个元素进行比较,如果符合条件,就换位。
特点:第一圈的最值出现在最后位。
堆内存中不断的转换会消耗较多的内存,如果把数组值放在栈内存中,比较完以后再在堆内存中一次转换位置,这样比较节省内存。
Java中util包中的Array.sort()函数直接提供最优的排序方法。
位置置换功能的抽取
发现无论什么排序。都需要对满足条件的元素进行位置置换。
所以可以把这部分相同的代码提取出来,单独封装成一个函数。
public static void swap(int[] arr,inta,int b)
{//注意这里必须是3个未知参数,因为要置换2数组值,所以要有数组这个未知参数
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
数组的查找操作:
折半查找:可以提高效率,但是前提是数组必须是有序的。
查表法:
查表法:将所有的元素临时存储起来。建立对应关系。
每一次&15后的值作为索引去查建立好的表。就可以找对应的元素。
这样比 -10+'a'简单的多。
可以通过数据的形式来定义。
发现终于出结果了。但是是反着的。想要正过来呢?可以通过StringBuffer reverse功能来完成。但是这个工具还没有学习。所以可以使用已经学习过的容器:数组来完成存储。
二维数组:
int[] arr = newint[3];//一维数组。
int[][] arr =new int[3][4];//定义了名称为arr的二维数组。二维数组中有3个一维数组。每一个一维数组中有四个元素。
int[][] arr =new int[3][];
arr是一个二维数组,但是arr[0]这个数组没有定义,所以如果打印的话为null。Arr[1]arr[2]都是null。可以手动初始化
arr[0] = newint[3];
arr[1] = newint[1];
arr[2] = newint[2];
System.out.println(arr.length);//打印是二维数组的长度 3;
System.out.println(arr[0].length);//打印二维数组中第一个一维数组长度
int[][] arr ={{3,5,1,7},{2,3,5,8},{6,1,8,2}};//另一个初始化方式
int [] x,y[]//这样定义,x是一维数组,y是二维数组