一.方法(函数)
1.方法的概念
方法(method)是具有独立功能的代码块组织成为一个成体,让他具有特殊功能的代码集。
2.方法的语法结构
访问修饰词 + 修饰词 +返回值 + 方法名 + 参数(数据类型 + 变量名)
//主方法
public static void main(String[] args)
- 3.方法的定义和使用
1)方法的使用:
a.定义方法
b.调用方法 - 方法名()直接调用
注意:先定义后调用,否则会报错
2)方法的定义
(1)无参方法
(2)有参方法
参数:数据类型 + 变量名
数据类型:
a.基本数据类型
b.引用数据类型:数组 / 类 / 接口
c.可变长参数
语法: 类型...
注意: 可变,参数在传递过程中可以是0 ~ n个参数
使用时,可变长参数后不能追加别的参数
(3)带返回值的方法
返回值类型:
基本数据类型:
引用数据类型:数组 / 类 / 接口
void:没有返回值
4.方法定义的格式
修饰词:public static
返回值类型:void/基本/引用
方法名:自定义,但可读性要好,必须遵循小驼峰命名法
方法参数:基本/引用/可变长参数
方法体:做逻辑判断
5.方法定义需要注意:
1)参数列表如何定义:当有不确定因数时会当作方法参数传递
2)返回值类型如何定义:考虑在调用时 是否需要这个值
6.方法的重载
1)概念:在同一个类中,相同的方法名,方法参数不一致可以造成方法的重载
a.前提:必须在一个类中
b.参数不一致,顺序不一致,个数不一致,类型不一致
c.方法重载和返回值无关
8.方法的参数传递
1)方法参数传递基本数据类型
特点:传递值,参数的改变,不影响实际参数
2)方法参数传递引用数据类型
特点:传递地址值,参数的改变,会影响实际参数
二、递归
三、数组排序
冒泡排序、选择排序、快速排序、插入排序、希尔排序、桶排序。。。
冒泡排序:
原理:每一轮比较相邻的两个元素,小的放前面,大的放后面
原数组: int[] arr = {8,2,3,7,1}
第一轮: i = 0
数据交换:arr[i] > arr[i+1]
[2,8],3,7,1 j = 1
2,[3,8],7,1 j = 2
2,3,[7,8],1 j = 3
2,3,7,[1,8] j = 4
第二轮: i = 1
[2,3],7,1,8 j = 1
2,[3,7],1,8 j = 2
2,3,[1,7],8 j = 3
第三轮: i = 2
[2,3],1,7,8 j = 1
2,[1,3],7,8 j = 2
第四轮: i = 3
[1,2],3,7,8 j = 1
两层for循环:
i: i = 0; i < length - 1 ;i++
j: j = 0; j < length - i - 1;j++
j+1 < length - i;
____________________________________
选择排序:
原理:每一轮都选择最大,放在最后面
原数据: int[] arr = {9,7,3,6,1}
第一轮:
结果: 1,7,3,6,9
1: 比较arr[1] 和 arr[0],得出最大值
定义index = arr[0]
2: 比较arr[2] 和 index,得出最大值
记录index = arr[0]
3: 比较arr[3] 和 index,得出最大值
记录index = arr[0]
4: 比较arr[4] 和 index,得出最大值
记录index = arr[0]
比较完成,交换下标位置
i: i = 0, i < length - 1
j: j = 1, j < length - i
原始数据:1,7,3,6,9
第二轮:1,6,3,7,9
1:arr[0] 和 arr[1]比较,最大值arr[1]
2:arr[2] 和 index比较,最大值arr[1]
3:arr[3] 和 index比较,最大arr[1]
比较完成,交换 index 和 j
i:i = 1
j:
源数据:1,6,3,7,9
第三轮:1,3,6,7,9
i: i = 2
j:
原数据:1,3,6,7,9
第四轮:1,3,6,7,9
i: i = 3
j: