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