------- android培训、java培训、期待与您交流! ----------
1.函数
1.1 函数的定义
函数就是定义在类中的具有特定功能的一段独立小程序。
函数也称为方法。
函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
1.2函数的特点
定义函数可以将功能代码进行封装
便于对该功能进行复用
函数只有被调用才会被执行
函数的出现提高了代码的复用性
对于函数没有具体返回值的情况,返回值类型用关键字void表示,
那么该函数中的return语句如果在最后一行可以省略不写。
注意:
函数中只能调用函数,不可以在函数内部定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者处理。
1.3函数的应用
两个明确
明确要定义的功能最后的结果是什么?
明确在定义该功能的过程中,是否需要未知内容参与运算
示例:
需求:定义一个功能,可以实现两个整数的加法运算。
分析:
该功能的运算结果是什么?两个数的和,也是一个整数(int)
在实现该功能的过程中是否有未知内容参与运算?加数和被加数是不确定的。
(两个参数int,int)
代码:
int getSum(int x,int y)
{
return x+y;
}
1.4函数的重载
可以定义多函数,却使用统一函数名称,这样方便阅读。
在调用时,虚拟机通过参数列表的不同来区分同名函数。
2.数组
2.2数组的内存结构
数组中其实存储的是数据的地址
2.3数组操作的常见问题
角标越界和空指针异常
2.4数组的常见操作
获取最值(最大值,最小值)
class ArrayTest { /* 获取数组中的最大值。 思路: 1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。 通过一个变量进行临储。 2,让数组中的每一个元素都和这个变量中的值进行比较。 如果大于了变量中的值,就用该该变量记录较大值。 3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。 步骤: 1,定义变量。初始化为数组中任意一个元素即可。 2,通过循环语句对数组进行遍历。 3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量; 需要定义一个功能来完成。以便提高复用性。 1,明确结果,数组中的最大元素 int。、 2,未知内容:一个数组。int[] */ public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x]>max) max = arr[x]; } return max; } /* 获取最大值的另一种方式。 可不可以将临时变量初始化为0呢?可以。这种方式,其实是在初始化为数组中任意一个角标。 */ public static int getMax_2(int[] arr) { int max = 0; for(int x=1; x<arr.length; x++) { if(arr[x]>arr[max]) max = x; } return arr[max]; } /* 获取最小值。 */ public static int getMin(int[] arr) { int min = 0; for(int x=1; x<arr.length; x++) { if(arr[x]<arr[min]) min = x; } return arr[min]; } public static void main(String[] args) { int[] arr ={5,1,6,4,2,8,9}; int max = getMax_2(arr); int min = getMin(arr); System.out.println("max="+max); System.out.println("min="+min); } }
选择排序
/* 选择排序。 内循环结束一次,最值出现头角标位置上。 */ public static void selectSort(int[] arr) { for (int x=0; x<arr.length-1 ; x++) { for(int y=x+1; y<arr.length; y++) { if(arr[x]>arr[y]) { /* int temp = arr[x]; arr[x] = arr[y]; arr[y]= temp; */ swap(arr,x,y); } } } }
冒泡排序
/* 冒泡排序 */ public static void bubbleSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=0; y<arr.length-x-1; y++) //-x:让每一次比较的元素减少,-1:避免角标越界。 { if(arr[y]<arr[y+1]) { int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } } }
折半查找(二分法查找)
前提:数组必须是有序的。
/* 折半查找。提高效率,但是必须要保证该数组是有序的数组。 */ public static int halfSearch(int[] arr,int key) { int min,max,mid; min = 0; max = arr.length-1; mid = (max+min)/2; while(arr[mid]!=key) { if(key>arr[mid]) min = mid + 1; else if(key<arr[mid]) max = mid - 1; if(min>max) return -1; mid = (max+min)/2; } return mid; }
/* 折半的第二种方式。 */ public static int halfSearch_2(int[] arr,int key) { int min = 0,max = arr.length-1,mid; while(min<=max) { mid = (max+min)>>1; if(key>arr[mid]) min = mid + 1; else if(key<arr[mid]) max = mid - 1; else return mid; } return -1; }
2.5 二维数组
二维数组就是数组中的数组
------- android培训、java培训、期待与您交流! ----------