方法
为了不用重复的书写某段相同逻辑的代码,就将这一段代码提取出来,那么这种提取形式就称之为方法/函数。
方法/函数是来自C和C++中的函数继承而来,并未改变。
定义格式:
修饰符 返回值类型 方法名(参数列表){
方法体;
return 返回值; //如果为void返回值类型,不写返回值
}
// 1 常见的修饰符有public / static / protect / static 和 final。因为这部分内容设计面向对象的知识点,这里暂时保留
// 2 返回值类型可以是void 、 基本数据类型 和 引用类型
//方法名 遵循标识符的命名规则 --- 建议采用驼峰命名法
//参数列表:定义时为形参列表,在调用方法的时候调用者需要传入对应的实参。这时,形参会在该方法所在的栈内存中开辟出对应名称的变量或引用。
注意:return之后的代码不能继续执行,会编译报错
注意:
1. 如果方法执行完成之后不需要结果,那么返回值类型定义为void
2. 如果一个方法的返回值类型是void,那么这个方法没有返回结果,但是方法中依然可以写return语句,此时形式为return ;---通常是为了规避掉一个不合常理的数据
方法的重载
目的作用: 一般情况下,方法的重载主要是标记功能相似、参数不同、实现方法的业务算法不同的一组方法,这样做减少了函数名的数量,避免了名字空间的污染。较为常见的有toString()方法和println()方法。
在一个类中,出现了方法名一致而参数列表不同的方法--方法的重载
方法签名:方法名+参数列表 sum( int , int )
注意:
1. 在同一个类中,不允许存在方法签名一致的方法
2. 在调用方法的时候遵循的是最相近的匹配原则---本质上就是看类型能否自动转换,并且转换最相近的值
3. 在方法重载的时候需要尽量的重载所有的情况
方法的递归
在方法内部调用自己本身---递归 ,递归的主要思想是针对现实问题进行逆推,求解。但是在逆推的规程中注意,需要找到规律以及结束的条件,否则就是没有结束的递归,会出现栈溢出的问题。
如 sum = 1+ 2 + …… + 10;可以转化为如下的思想:
sum(10)
10 + sum(9)
9+ sum(8)
...
sum(2)
2 + sum(1)
1
---思路:逆推
public static int sum(int n){
if(n ==1){
return1;
}
return n+ sum(n - 1);
}