美文网首页Java工程师知识树
Java基础-基础语法-方法

Java基础-基础语法-方法

作者: HughJin | 来源:发表于2020-12-16 10:33 被阅读0次

    Java工程师知识树 / Java基础

    1、什么是方法(Method)?

    方法是一组为了实现特定功能的代码块的集合

    方法在语法上的功能主要有以下两个

    ①:结构化代码 将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。 ②:减少代码重复 一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对应的功能代码。

    方法在书写时需要注意以下两点

    ①:逻辑严谨 方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。 ②:通用性强(可重复利用) 方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。在Java 语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。

    总结

    方法:一段可重复使用的代码段; 程序中完成独立功能的一段代码的集合。

    2、Java中方法的格式:

    [修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……]) { 执行语句; [return 返回值;]//需要的话 }

    方法的参数列表(参数的类型 ,参数的个数,参数的顺序)。只要上述有一个不一样,那么这个参数列表就不一样!

    3、方法里的属性

    • 访问控制符:访问控制符限定方法的可见范围,或者说是方法被调用的范围。 方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private。其中无访问控制符不书写关键字即可。具体的范围在后续有详细介绍。

    • 形式参数:在方法被调用时用于接收外界输入的数据。

    • 实参:调用方法时实际传给方法的数据。

    • 返回值:方法在执行完毕后返还给调用它的环境的数据。

    • 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型 void。

    • 方法签名:方法名和方法的参数列表(能区别方法);//最关键的

    • java语言中调用方法:对象名.方法名(实参列表)。实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。

    • return:语句终止方法的运行并指定要返回的数据。

    4、方法特点

    • 它可以实现独立的功能;

    • 必须定义在类里面;

    • 它只有被调用才会执行;

    • 它可以被重复使用;

    • 方法结束后方法里的对象失去引用;

    如何定义一个功能,并通过方法体现出来:

    1. 明确该功能运算后的结果.明确返回值类型;

    2. 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;

    5、变量作用域

    变量的范围是程序中该变量可以被引用的部分。 方法内定义的变量被称为局部变量。 局部变量的作用范围从声明开始,直到包含它的块结束。 局部变量必须声明才可以使用。 方法的参数范围涵盖整个方法。参数实际上是一个局部变量。 for循环的初始化部分声明的变量,其作用范围在整个循环。但循环体内声明的变量其适用范围是从它声明到循环体结束。它包含如下所示的变量声明:

    image.png

    你可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。

    6、构造方法

    特定:构造方法和它所在类的名字相同,但构造方法没有返回值。

    用处:当一个对象被创建时候,构造方法用来初始化该对象。

    原因:通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。

    备注:不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认无参数的构造方法,它把所有成员初始化为0。 一旦你定义了自己的构造方法,默认构造方法就会失效。

    7、什么是方法的重载(Overload)

    概念: 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。

    存在的原因: 屏蔽了一个对象的同一类方法由于参数不同所造成的差异。

    特点: 与返回值类型无关,只看参数列表。

    特别说明

    • Java编译器根据方法签名判断哪个方法应该被调用。

    • 方法重载可以让程序更清晰易读。

    • 执行密切相关任务的方法应该使用相同的名字。

    • 重载的方法必须拥有不同的参数列表。

    • 不能仅仅依据修饰符或者返回类型的不同来重载方法。

    以下是方法重载的示例

    public void a(int a){}
    public int a(){}
    public void a(int a,String s){}
    

    我的总结:方法重载,方法名相同,但是参数列表不一致!(和方法覆写(方法重写)不一样,方法覆写(方法重写)的方法名和参数列表都必须一样),注意方法重载和方法覆写(方法重写)的不同!

    8、可变参数

    从java5开始出现了可变参数,这是对java方法及数组的拓展!方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定。

    定义格式: 返回值类型 方法名(参数类型 ... 形式参数){ }

    可变参数的特点

    • 只能出现在参数列表的最后;

    • ... 位于变量类型和变量名之间,前后有无空格都可以;

    • 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

    9、方法递归调用

    方法的递归调用指的是一个方法自己调用自己的形式。一般如果要进行方法的递归操作往往都具备有以下的特点:

    • 方法必须有一个递归的结束条件;

    • 方法在每次递归处理的时候一定要做出一些变更.

    例如题目:

    一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子? 分析如下: 第一个月小兔子没有繁殖能力,所以还是一对; 两个月后,生下一对小兔子,总数共有两对; 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,总数共是三对; ... ...

    依次类推可以列出下表:

    img

    可以得出: 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…… 这个数列从第三项开始,每一项都等于前两项之和。

    public static int fun(int m) {
        if (m < 2) {
            return 1;
        } else {
            return fun(m - 1) + fun(m - 2);
        }
    }
    
    public static void main(String[] args) {
        System.out.println(fun(12));
    }
    

    相关文章

      网友评论

        本文标题:Java基础-基础语法-方法

        本文链接:https://www.haomeiwen.com/subject/fagbgktx.html