【Java方法笔记】3-1 方法:定义与调用

§3-1 方法

从开始学习 Java 以来,我们接触得最多的就是public static void main(String[] args) {},这是main方法。那么,何谓方法?方法有何用?如何编写方法,又如何使用方法?这是本章将要解决的问题。

第一讲,先从方法本身的定义以及方法的定义和调用开始。

3-1.1 何谓方法?

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

  • 方法是解决一类问题地步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

在先前章节中,我们经常使用System.out.println(),这句语句的意思是:调用在System类中的out输出对象的println()方法。而该方法被定义在 Java 内,可见,方法在程序中被创建,在其他地方被引用。

设计方法的原则:一个方法只完成一个功能,保持方法的原子性。

3-1.2 方法的定义与调用

Java 的方法类似于其他语言的函数,是一段用于完成特定功能的代码片段,一般情况下,一个方法包含以下语法:

方法:包含一个方法头和一个方法体。

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

  • 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需操作,但没有返回值,此时returnValueType的关键字为void

  • 方法名:方法的实际名称,方法名和参数表共同构成方法签名。命名规范遵循首字母小写 + 驼峰原则;

  • 参数类型:参数像是个占位符(placeholder)。方法被调用时,传递值给参数,这个值称为实际参数(实参)或变量。参数列表是指方法的参数类型、顺序和参数个数。可选,方法可不包含任何参数。

    • 形式参数(形参):方法被调用时用于接收外界输入的数据;
    • 实参:调用方法时实际传给方法的数据
  • 方法体:包含具体的语句,定义该方法的功能。

创建一个方法,语法

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

调用一个方法,语法

对象名.方法名(实参列表)
  • 当方法返回一个值时,方法调用常被当做一个值,可以利用表达式调用。如:int larger = max(30,40);
  • 若方法返回值为void,方法调用只能为一条语句,为语句调用。如:System.out.println("这是条语句。");

我们来尝试写两个方法,并调用它们:

方法 I:加法运算

public class Demo01 {
    //main 方法:方法名前的为方法的返回值类型,void 不返回值
    public static void main(String[] args) {
        //调用 add 方法
        //实际参数:实际调用传递的参数
        int sum = add(1, 2);

        //输出结果
        System.out.println(sum);
    }

    //自定义:add 方法
    //形式参数:勇于接受外界数据
    public static int add(int a, int b) {
        return a+b;
    }
}

运行结果如图所示:

image

方法 II:比大小

public class Demo02 {
    public static void main(String[] args) {
        //比大小(整型),调用方法:当做一个值
        int a = compare(2,2);
        int b = compare(1,2);
        int c = compare(2,1);

        //输出
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }

    public static int compare(int a, int b) {
        int result = -1;

        if (a == b) {
            System.out.println("Equal");
            return 0;   //终止方法
        }
        if (a < b) {
            result = b;
        } else {
            result = a;
        }
        //返回值必须写在方法体最后
        return result;
    }
}

运行结果如图所示:

image

方法调用的大致过程:值得注意的是,方法在调用时,被调用方法会被压入栈中,同时保存调用方法的运行状态和返回地址,直至被调用方法执行完毕后,方法出栈,归还堆栈空间并根据返回地址向调用函数返回返回值。Java 的这种调用机制被称为栈机制

3-1.3 拓展:值传递与引用传递

Java 中的方法类似于 C++ 的函数,在调用方法时,通常需要考虑调用方法、参数传递、返回值类型。不同于C++有多种函数传参方式,在 Java 中,只有值传递。

值传递:在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。在传递参数时,实际参数的内容将会被赋值给被调用方法的形式参数中,为形式参数开辟一定的内存空间,方法体中所有的语句,都是针对形式参数的修改和访问。当方法执行完毕后,所开辟的内存空间将会被回收,并且方法将会通过一个匿名对象返回return后方的表达式。Java 只使用值传递。

引用传递:在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

posted @ 2021-07-24 11:03  Zebt  阅读(140)  评论(0)    收藏  举报