一. 方法
1.1 方法的声明格式
语法:
访问权限修饰符 其他修饰符 返回值类型 方法名称(参数列表) {
//方法体【函数体】
return 返回值;//如果返回值类型void ,可以不用写return
}
1.2 方法的分类
根据方法有没有参数,可分为:
1.无参方法
2.有参方法
根据有没有返回值,可分为:
1.无返回值方法
2.有返回值方法
1.3 方法的调用
1.3.1 无参数无返回值方法调用
1.3.2 无参数有返回值方法调用
调用方法,在方法前面定义变量,接收方法返回值
1.3.3 有参数无返回值方法调用
1.3.4 有参数有返回值方法调用
1.3.5 有参数有返回值方法调用
在输出语句中调用方法, System.out.println( 方法名()) 。
public static void main(String[] args) {
System.out.println(getSum(5,6));
}
public static int getSum(int a,int b) {
return a + b;
不能用输出语句调用 void 类型的方法。因为方法执行后没有结果,也就打印不出任何内容。
public static void main(String[] args) {
System.out.println(printHello());// 错误,不能输出语句调用void类型方法
}
public static void printHello() {
System.out.println("Hello");
}
1.3.6 static修饰和没有static修饰
没有static修饰
在一个类中直接调用方法名
不在一个类中用 类名.方法名调用
有static修饰
在一个类中如果在static修饰的方法中调用要先实例化对象,然后 对象.方法 调用,如果没有static修饰,直接调用
如果不在一个类中,要先实例化对象,然后 对象.方法 调用
二. 方法重载
2.1 方法重载的概念
同一个类中,方法名字相同,参数列表不同,则是方法重载。
参数列表的不同包括,参数个数不同,参数数据类型不同,参数顺序不同
自我总结:只要在满足方法名字相同,参数列表不同的情况下,修饰符和返回值可以随意修改
/演示方法的重载
//测试类
class TextDemo04{
public static void main(String[] args) {
show("10");
show("10",10);
}
public static void show() {
System.out.println("无参无返回值的show");
}
public static void show(int a) {
System.out.println("int的show");
}
public static void show(String a) {
System.out.println("String的show");
}
public static void show(String a,int b) {
System.out.println("String int的show");
}
}
三. 递归算法
既然说了方法的调用,就不得不提递归
3.1 递归算法的概念
在一个方法的方法体内调用该方法本身,称为方法的递归。简单理解自己调用自己。
方法递归包含了一种隐式的循环,会重复执行某段代码,但是这种重复不需要使用循环语句来进行控制
出现问题: StackOverFlowError 栈空间溢出异常,所以递归不能一直运行,一定要有结束条件。
3.2 递归算法的案例
递归算法的求10的阶乘应该是经典的题了,只要会了它,你就已经掌握了 递归算法的精髓(这句话我觉得我好像在哪写过。。。)
public class Demo4{
public static void main(String[] args){
int result=jiecheng(10);
System.out.println(result);
}
public static int jiecheng(int num){
if(num==1){
return 1;
}else{
return jiecheng(num-1)*num;
}
}
}
说白了就是反复低调用自己,最后在遇到终止条件时,由内而外返回出值,最后得到最终的值