深入学习方法

  • 一、复习方法基础知识
  • 二、方法定义完整格式
  • 三、关于参数
  • 四、关于返回值


一、复习方法基础知识

之前,我们在 原重学Java(004)—— Java基础知识(赋值、比较、逻辑、三元运算符、方法、判断语句)这篇笔记当中,简单学习了方法的基础知识。这里我们做一个简单的复习。

方法定义格式:

public static void 方法名称() {
    方法体
}

调用格式:

方法名称();

注意事项:
1.方法定义的先后顺序无所谓。
2.方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
3.方法定义之后自己不会执行,如果希望执行,一定要进行方法的调用。

二、方法定义完整格式

但是在实际的学习当中,光有之前的知识是不够的,我们需要进一步的学习,接下来我们重新认识一下Java中的方法。

方法可以说是若干语句的功能集合,方法好比是一个工厂。比如一个钢铁工厂,要把铁矿石加工成钢铁,这里的铁矿石是原料,产出物是钢铁。那么在方法当中,参数就相当于是原料,返回值就相当于是产出物。我们要做的就是让参数进入方法,最终以返回值的形式从方法中出来。

定义方法的完整格式:

修饰符 返回值类型 方法名称(参数类型 参数名称,...){
    方法体
    return 返回值;
 }

这里我们对其中的名词进行解释:

  1. 修饰符:现阶段固定:public static
  2. 返回值类型:也就是方法最终产生的数据结果是什么类型
  3. 方法名称:方法的名字,命名规则和变量一样,小驼峰式
  4. 参数类型:进入方法的数据是什么类型
  5. 参数名称:进入方法的数据对应的变量名称
    PS:参数如果有多个使用逗号进行分隔
  6. 方法体:方法需要做的事情,若干行代码
  7. return:两个作用,第一停止当前的方法,第二将后面的返回值还给调用处
  8. 返回值:也就是方法执行后最终产生的数据结果
    注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。

在我们定义好方法之后,我们要想执行该方法,就必须要在main方法当中进行方法的调用,方法的调用方法有如下三种方法:

  1. 单独调用:方法名称(参数);
  2. 打印调用:System.out.println(方法名称(参数));
  3. 赋值调用:数据类型 变量名称 = 方法名称(参数);

例如我们定义一个方法:实现两个int数字相加。首先我们要明确该方法的三要素:
1.单独调用:方法名称(参数);
2.打印调用:System.out.println(方法名称(参数));
3.赋值调用:数据类型 变量名称 = 方法名称(参数);

注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。

代码如下:

public class Demo02MethodDefine {

    public static void main(String[] args) {
        //单独调用
        sum(10,20);
        System.out.println("---------------------------");

        //打印调用
        System.out.println(sum(10,20));//30
        System.out.println("---------------------------");

        //赋值调用
        int number = sum(10,20);
        System.out.println("变量的值为:" + number);
    }

    public static int sum(int a,int b) {
        System.out.println("方法执行了");
        int result = a + b;
        return result;
    }

}

三、关于参数

在方法中,有时有参数,有时无参数,那么有参数和无参数有什么区别呢?下面我们来简单得探讨一下。

有参数:小括号当中有内容。当一个方法需要一些数据条件,才能完成任务时候,就是有参数。
例如两个数字相加,必须知道两个数字各自多少,才能相加。

无参数:小括号当中留空。当一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。
例如定义一个方法,打印固定10次HelloWorld。

具体代码如下:

public class Demo03MethodParam {

    public static void main(String[] args) {
        method1(10,20);
        System.out.println("--------------------");
        method2();
    }

    //两个数字相乘,做乘法,必须知道两个数字各自是多少,否则无法进行计算
    //有参数
    public static void method1(int a, int b) {
        int result = a * b;
        System.out.println("结果是:" + result);
    }

    //例如打印输出固定10次文本字符串
    public static void method2(){
        for (int i = 0; i < 10; i++) {
            System.out.println("Hello,World!" + i);
        }
    }
}

四、关于返回值

在Java的方法中,如果有返回值,则可以把方法中产出的结果返回(回馈)给它的调用着,此时调用者也可以对该返回结果进行操作;如果没有返回值,则只能由方法本身对结果进行操作,而它的调用者不能对它进行任何操作。

此外,对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用;但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。

代码说明:
定义一个方法,用来“求出”两个数字之和。(你帮我算,算完之后把结果告诉我)

变形:定义一个方法,用力“打印”两个数字之和。(你来计算,算完之后你自己负责显示结果,不用告诉我)

public class Demo04MethodReturn {

    public static void main(String[] args) {
        //我是main方法,我来调用你。
        //我调用你,你来帮我计算一下,算完了之后,把结果告诉我的num变量。
        int num = getSum(10,20);
        System.out.println("返回值是:" + num);
        System.out.println("---------------------");

        printSum(100,200);
        System.out.println("---------------------");
        //对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用
        System.out.println(getSum(10,20));//正确写法
        getSum(10,20);//正确写法,但返回值没有用到
        System.out.println("---------------------");

        //对于void没有返回值的方法,只能单独调用,不能打印或赋值调用
        // System.out.println(printSum(10,20)); //会报错
        //System.out.println(void);

        //int num2 = printSum(10,20);//错误写法
    }

    //我是一个方法,我负责两个数字相加。
    //我有返回值int,谁调用我,我就把计算结果告诉谁
    public static int getSum(int a, int b) {
        int result = a + b;
        return result;
    }

    //我是一个方法,我负责两个数字相加。
    //我没有返回值,不会把结果告诉任何人,而是我自己进行打印输出。
    public static void printSum(int a, int b) {
        int result = a + b;
        System.out.println("结果是" + result);
    }
}