方法又称为功能函数,有时候我们需要在程序中反复执行同一项任务,我们不需要反复编写完成该任务的代码,而只需要调用该任务的方法,让 Java 运行其中的代码。方法可以使程序的编写、阅读、测试和修复变得非常容易。
从面向对象的角度理解,方法可以描述一类对象的行为与功能。展现某个对象的行为,调用该对象对应的方法就可以完成。
## 1. 定义方法
方法必须在一个类中定义,不能单独存在。
```java
public class Person {
//定义一个打招呼的方法
public static void greet() {
System.out.println("Hello!");
}
public static void main(String[] args) {
greet();//调用greet方法
}
}
```
输出结果:
```
Hello!
```
`greet`是定义在 `Person` 类中的一个类方法。
- `static` 意思是这个方法属于`Person`类, 而不是属于`Person`类实例化的某个对象 . 可以在另外一个类里面像这样 `Person.greet()` 一样直接用。`static`修饰的方法叫做类方法,类方法也称为静态方法。
- `void` 意思是这个方法没有返回值。 在Java 中也可以给方法定义一个 `返回值` ,这个需要在方法声明
- 这个方法没有任何参数, 但是在其他场景Java方法可以有一个或多个参数
## 2. 传递参数
方法允许向它传递一些数据,即传递参数。这样可以根据传递参数的不同,产生不同的结果。
向某人`Say Hello`:
```java
public class Person {
public static void greet(String username) {
System.out.println("Hello, " + username);
}
public static void main(String[] args) {
greet("Tom");//调用greet方法,传递Tom字符串
greet("Lily");//再次调用greet方法
greet("Arvin");
}
}
```
输出结果:
```
Hello, Tom
Hello, Lily
Hello, Arvin
```
- `String username` 定义方法传递参数为一个`String` 类型的字符串,定义参数时必须声明参数数据类型。参数可以传递Java 中任意数据类型
- `greet("Tom");`调用`greet`方法并传递一个"Tom"字符串,方法调用时传递的参数类型必须和声明方法参数的数据类型保持一致。
- 方法可以重复被调用
**传递多个参数:**
```java
public class Calculator {
public static void add (int a, int b) {
int sum = a + b;
System.out.println("a + b = " + sum);
}
public static void main(String[] args) {
add(1000,24);
}
}
```
输出结果:
```
a + b = 1024
```
- 方法可以传递多个参数
## 3. 返回值
方法并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。这些返回的值称为`返回值`。
在方法中使用`return`语句将值返回到调用方法的代码行。`返回值`可以将程序的大部分繁重工作转移到方法中去完成,从而简化主程序。
```java
public class Calculator {
public static int add (int a, int b) {
int sum = a + b;
return sum;
}
public static int multiply(int a, int b) {
return a * b;
}
public static void main(String[] args) {
int sum = add(1000,24);
System.out.println("a + b = " + sum);
int product = multiply(20,45);
System.out.println("a * b = " + product);
}
}
```
输出结果:
```
a + b = 1024
a * b = 900
```
- `int add(int a, int b)` 方法名之前必须声明方法的返回值类型,比如 `add` 方法返回值为`int`类型,没有返回值时声明为 `void`
- `return`语句必须在方法的结尾,之后不能有其他语句
- `return` 可以返回任何类型的值(数值、数组、对象、集合、文本)。必须和方法声明的返回值类型保持一致
- `return`后面可以跟字面量(常量)、变量或者表达式
- `return`也可以单独使用,不跟任何表达式,表示立即结束当前方法的执行
了解前面规则之后,来个综合练习实例:制作一个任务列表
```java
public class Person {
/**
* 读取输入的任务
* @return 返回数组
*/
public static String[] todo() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入今天要完成的5件事儿: ");
String[] todoArray = new String[5];
int i = 0;
while (true) {
todoArray[i] = scanner.nextLine();
i++;
if (i == 5) {
break;
}
}
return todoArray;
}
/**
* 打印数组
* @param array
*/
public static void printArray(String[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println((i + 1) + " : " + array[i]);
}
}
public static void main(String[] args) {
//调用todo方法,获取todo数组
String[] todoArray = todo();
System.out.println("嘿,你今天要完成以下任务:");
//打印今天的任务
printArray(todoArray);
}
}
```
输出结果:
```shell
请输入今天要完成的 5 件事儿:
读书
写作
做家务
购物
运动
嘿,你今天要完成以下任务:
1 : 读书
2 : 写作
3 : 做家务
4 : 购物
5 : 运动
```
## 4. 对象的方法
上面定义的一些方法都属于静态方法,也就是类的方法,属于一个类。描述一个类的统一方法,不属于某个实例对象。
对象的方法,又叫成员方法,它属于一个对象实例,描述的是一个对象的行为和功能。
```java
public class Calculator {
public int add (int a, int b) {
return a + b;
}
public static void main(String[] args) {
//创建一个计算器的对象
Calculator calculator = new Calculator();
//调用这个计算机对象的方法
int sum = calculator.add(1000,24);
System.out.println("a + b = " + sum);
}
}
```
- `add` 方法是一个对象的方法,描述的是一个计算机的功能,不可以用`static`修饰,否则会变成类方法。
- 对象的方法,属于一个对象,必须先去创建该对象才可以使用,对象的方法
> 关于类和对象更多的方法,在后面内容会介绍 扣扣交流群:468439140
方法的内容,先介绍到这儿,简单总结:方法也称之为函数,直观地理解,返回值就是函数的输出,参数就是函数的输入,方法中的语句就是函数的计算公式。