复学day06

方法

在学习过程中,我们经常会看到System.out.println(),这句话,从结构分析,System为一类,out为System类的内部类,println()为out对象的一方法。(错误,out为静态数据成员,后续学习)

方法的定义

方法是语句的集合,他们在一起执行一个功能。

方法是解决一类问题的步骤的有序组合

方法包含于类或对象中

方法在程序中被创建,在其他地方被引用

设计方法的原则

方法的本意是功能块,是实现某个功能的语句块集合。在设计的时候尽量保持方法的原子性,即一个方法只完成一个功能。

public static int add(int a,int b){
    return a + b;
}

上述便定义了一个加法方法,其中public、static为修饰符,int为返回值类型,add为方法名,其中的a、b为假设参数,输出return后的语句

其格式如下:

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    return 返回值;//在一个方法中还可以起到终止方法的作用
}

修饰符:可选,告诉编译器如何调用该方法,定义方法的访问类型。

返回值类型:方法返回的结果类型。不过有些方法所执行的操作没有返回值,此时返回值类型的关键字为void。

方法名:方法的实际名称。

方法体:定义方法功能的语句。

方法调用

调用方法:对象名.方法名

方法的重载

重载就是在一个类中,有相同的方法名称,但形参不同的方法。

方法重载的规则:

1、方法名称必须相同。

2、参数列表必须不同(个数不同or类型不同or参数排列顺序不同等)。

3、方法的返回值类型可以相同也可以不相同。

4、仅仅返回值类型不同不足以成为方法的重载

实现理论:

方法名称相同时,编译器会根据调用方法的参数个数、参数类型等逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

不定项参数

不定向参数即可变参数,从JDK1.5开始,java支持传递同类型的可变参数给一个方法。

格式:在方法声明中,在指定参数类型后加一个省略号(......)。

public class Demo{
    public static void main(String[] args){
        Demo demo = new Demo();
        demo.test(x:1,...i:2,3,4,5);
    }
    public void test(int x,int... i){
        
    }
}

递归

通常方法之间存在调用配合完成工作,A方法调用B方法,我们很容易理解,那么递归就是:A方法调用A方法,自己调用自己。(该部分为重点+难点)

递归的好处:利用递归可以用简单的程序来解决一些复杂的问题。它同通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,极大减少了程序代码量。递归的能力在于用有限的语句来定义对象的无限集合。

递归结构包括两个部分:

递归头:什么时候不调用自身方法。起到截至的作用,避免死循环

递归体:什么时候需要调用自身方法

public static int f(int n){
    if(n==1){  //边界条件
        return 1;
    }else {
        return n*f(n-1);
    }
}

上述代码便是通过递归实现参数n的阶乘实例

递归

由于java方法执行为栈机制,所以在大数运算时不推荐采用递归方法, 递归重点在于其思想。

posted @ 2020-11-15 17:10  何安生  阅读(68)  评论(0)    收藏  举报