📜  Java中的方法

📅  最后修改于: 2020-03-30 04:03:28             🧑  作者: Mango

方法是执行某些特定任务并将结果返回给调用方的语句的集合。方法可以执行某些特定任务,而无需返回任何内容。方法使我们可以重用代码而无需重新键入代码。在Java中,每个方法都必须属于某个类的一部分,该类不同于C/C++和Python之类的语言。
方法是节省时间的,可帮助我们重用代码而无需重新键入代码。

方法声明

通常,方法声明包含六个部分:

  • 修饰符 :定义方法的访问类型,即可以从您的应用程序中访问的位置。在Java中,有4种类型的访问说明符。
    • public:可在您的应用程序的所有类中访问。
    • protected:在定义它的及其类中可访问
    • private:只能在定义它的类中访问。
    • default(在不使用任何修饰符的情况下声明/定义):可在定义其类的相同类和包中访问。
  • 返回类型:方法返回的值的数据类型;如果不返回值,则返回void。
  • 方法名称:字段名称的规则也适用于方法名称,但约定略有不同。
  • 参数列表:在括号内定义了输入参数的逗号分隔列表,并以其数据类型开头。如果没有参数,则必须使用空括号()。
  • 异常列表:方法期望的异常可能引发,您可以指定这些异常。
  • 方法主体:括在括号之间。需要执行您执行预定操作的代码。


方法签名:它由方法名称和参数列表(参数数量,参数类型和参数顺序)组成。返回类型和异常不视为其中的一部分。
以上功能的方法签名:

max(int x,int y)

如何命名方法?:方法名称通常是一个单词,应该是小写的动词或过歌词,以小写的动词开头,后跟形容词,名词……。第一个单词之后,每个单词的第一个字母应大写。例如,findSum,computeMax,setX和getX
通常,方法在定义它的类中具有唯一的名称,但是有时某个方法可能与同一类中其他方法的名称相同,因为Java中允许方法重载

调用方法

需要使用该方法的功能来调用该方法。调用方法可能有三种情况:在以下情况下,
方法返回到调用它的代码:

  • 它完成了方法中的所有语句
  • 它到达一个返回语句
  • 引发异常
    // Program to illustrate methodsin Java
    import java.io.*;
    class Addition {
        int sum = 0;
        public int addTwoInt(int a, int b){
            // 两数相加.
            sum = a + b;
            //返回两数之和.
            return sum;
        }
    }
    class GFG {
        public static void main (String[] args) {
            // 创建一个Addition的对象
            Addition add = new Addition();
            // 调用addTwoInt()求两数的和
            int s = add.addTwoInt(1,2);
            System.out.println("两数之和 :"+ s);
        }
    }

    输出:

    两数之和 :3

    请参见以下示例,以详细了解方法调用:

    // Java展示调用方法的不同方法
    import java.io.*;
    class Test
    {
        public static int i = 0;
        // 构造函数,会计算类的对象数量
        Test()
        {
            i++;
        }
        // static方法被用来访问static的类成员
        // 获取被创建的对象的数量
        public static int get()
        {
            // 待执行code....
            return i;
        }
        // 对象方法直接调用在其他类“GFG"内,被创建的对象
        public int m1()
        {
            System.out.println("m1来自GFG类");
            // 调用m2()方法.
            this.m2();
            
            return 1;
        }
        // 返回的类型是void,所以不返回任何东西
        public void m2()
        {
            System.out.println("m2来自于m1");
        }
    }
    class GFG
    {
        public static void main(String[] args)
        {
            // 创建类的对象
            Test obj = new Test();
            // 调用m1().
            int i = obj.m1();
            System.out.println("m1 :" + i);
            // 调用 m2()方法
            // obj.m2();
            int no_of_objects = Test.get();
            System.out.print("被创建的对象的数量 : ");
            System.out.println(no_of_objects);
        }
    }

    输出:

    m1来自GFG类
    m2来自于m1
    m1 :1
    被创建的对象的数量 : 1

    以上程序的控制流程:

    方法调用的内存分配

    方法调用是通过堆栈实现的。每当在堆栈区域内创建一个被称为方法的堆栈框架时,之后将传递给该参数的参数以及此被调用方法所返回的局部变量和值存储在此堆栈框架中,并且当被调用方法的执行完成时,分配的堆栈帧将被删除。有一个堆栈指针寄存器,用于跟踪堆栈顶部,并相应地对其进行了调整。