Java 语言的方法相当于其他编程语言中的函数(Function)或者子程序(汇编语言),方法是用来完成相对独立功能的一段代码集合。
Java 语言的方法必须定义在类中,而不允许单独出现。并且,方法只能通过定义该方法的类进行调用。方法的声明不允许出现嵌套,即不允许在一个方法中声明另一个方法。
声明方法的格式如下:
[<修饰符>] <返回值类型> <方法名>([形参列表]) { 方法体 }
其中:
修饰符:修饰符用来指定当前方法的可见性,如:公共方法、私有方法等
返回值类型:用来指定方法返回值的类型,如:int、boolean等
方法名:方法名起到标识的作用,调用方法时就是通过方法名进行调用。
形参列表:用来指定调用方法时需要传递几个参数,以及这些参数的类型
Java 在声明方法时必须指定方法运行需要的所有参数及类型,而这种参数称为形参。形参只规定了方法所需要参数的数目、类型和参数名称。Java 方法形参列表格式如下:
修饰符 返回值类型 方法名(数据类型1 参数名1, 数据类型2 参数名2, ..., 数据类型n 参数名n)
然而,在实际调用一个方法时,必须提供与形参列表相匹配的数据,称为实参。Java 方法实参列表格式如下:
(参数1, 参数2, ..., 参数n)
注意:实参可以是变量、常量和表达式。但是,实参的数目、类型和出现的顺序必须和相应形参保持一致。
例如:下面 Demo 类中定义了一个 add() 方法,该方法计算两个 int 的和,然后返回结果。Java 代码如下:
public class Demo { /** 定义了一个 int 类型的常量 */ private static final int x = 10; public static void main(String[] args) { Demo demo = new Demo(); // 调用方法 int result = demo.add(10, 20); System.out.println("result=" + result); // 表达式作为实参 result = demo.add(5 + 5, 20); System.out.println("result=" + result); // 常量作为实参 result = demo.add(x, 20); System.out.println("result=" + result); } /** * add 方法指定了两个 int 类型的形参 * @param x 形参1 * @param y 形参2 * @return */ private int add(int x, int y) { return x + y; } }
输出结果:
result=30 result=30 result=30
上面代码中,add(int x, int y) 中 x 和 y 是两个 int 类型的形参。而 demo.add(10, 20) 中的 10 和 20 是调用方法的实参。
注意,如果方法没有定义任何形参,那么在调用方法时也需要指定空的小括号(“()”),例如:
// 定义无参方法 public class Demo { public int show() {} } // 调用无参方法 Demo demo = new Demo(); demo.show();
返回值是一个方法在执行完成后返还给调用者的结果。在声明方法时必须指定返回值的数据类型,例如:
/** * add 方法指定了两个 int 类型的形参 * @param x 形参1 * @param y 形参2 * @return */ private int add(int x, int y) { // 使用 return 关键字返回数据 return x + y; }
上面的 add 方法定义返回值的类型为 int,且方法使用 return 关键字返回 x + y 的计算结果。
如果一个方法没有返回值,则指定为 void,例如:
private void show(int result) { System.out.println("result=" + result); }
上面的 show 方法定义没有返回值。在没有返回值的方法中,可以使用 return 关键字提前返回。例如:
private void show(int result) { // 如果小于0,则退出方法 if(result < 0) { return; } System.out.println("result=" + result); }
如果在定义为 void 类型的方法中使用 return 方法返回值,则编译失败。
调用方法是为了执行方法体中的代码,以实现预期的功能。Java 中调用方法的格式为“对象名.方法名(参数列表)”,例如:int result = demo.add(10, 20)。
通常我们调用一个有返回值的方法时,会接收其返回值进行下一步处理(你也可以忽略方法返回的结果)。当我们调用没有返回值的方法时,不能试图接收和使用其返回值,否则编译不能通过。例如:
public class Demo { private static final int x = 10; public static void main(String[] args) { Demo demo = new Demo(); // 调用方法 int result = demo.add(10, 20); System.out.println("result=" + result); } /** * add 方法指定了两个 int 类型的形参 * @param x 形参1 * @param y 形参2 * @return */ private int add(int x, int y) { return x + y; } }
上面代码中,通过 demo.add() 语句去调用 int add(int x, int y) 方法。执行上面程序,输出结果如下:
result=30