------- android培训、java培训、期待与您交流! ----------
数组
(1)同一种类型数据的集合。其实数组就是一个容器。
A:只要是容器,就得重点掌握。
(2)数组的好处
A:可以自动给数组中的元素从0开始编号,方便操作这些元素。
(3)数组的定义格式
A:当不明确数组中的元素时
**举例 int[] arr = new int[3];
B:当明确数组中的元素时
**举例 int[] arr = new int[]{1,2,3,4,5};
arr = {1,2,3,4,5};
操作数组最常见的问题
A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。
**ArrayIndexOutOfBoundsException
**举例 int[] arr = new int[3];
System.out.println(arr[3]);
B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。
**NullPointerException
**举例 int[] arr = new int[3];
arr = null;
System.out.println(arr[1]);
常见的数组的操作
记住:对数组的操作,一定要从角标下手。
A:遍历操作
**数组的属性:length 数组的长度。
**格式:数组名.length
for (int x=0;x < arr.length ;x++ ){
System.out.println("arr["+x+"]="+ arr[x]);
}
B:获取最值
**获取最大值
public static int getMax(int[] arr){
int max = arr[0];
//i从1开始,因为第一个数不用跟自己比
for(int x=1; x<arr.length; x++) {
if(arr[x]>max) {
max = arr[x];
}
}
return max;
}
**获取最小值
public static int getMin(int[] arr) {
int min = arr[0];
//i从1开始,因为第一个数不用跟自己比
for(int i=1; i<arr.length; i++) {
if(arr[i]<min){
min = arr[i];
}
}
return min;
}
C:排序
**选择排序
原理:如果拿0角标上的元素依次和后面的元素进行比较,
第一次内循环结束后,最小值出现在了0角标位置。
你就想想我们是如何打星星
****
***
**
*
public static void selectSort(int[] arr){
//i<arr.length-1 n个数两两比,n-1次就能获得最值。
for(int i=0; i<arr.length-1; i++){
//0角标元素没必要和自己比,所以j从1开始。
//发现j为了不重复比较,总是要比i大1,所以j从i+1开始
for(int j=i+1; j<arr.length; j++){
if(arr[j]<arr[i]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
**冒泡排序
原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。
public static void bubbleSort(int[] arr){
//i<arr.length-1 n个数两两比,n-1次就能获得最值。
for(int i=0; i<arr.length-1; i++){
//为了防止角标越界,j<arr.length-1
//为了减少比较次数,j<arr.length-1-i
for(int j=0; j<arr.length-1-i; j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
D:传递参数
**调用的时候,传递是基本类型的值的时候,形参改变对实参没有任何影响。
**调用的时候,传递是引用类型的地址的时候,形参改变对实参有直接影响。