1. 方法介绍
方法是执行特定功能的代码块,可以被多次调用。方法由方法头和方法体组成,方法头包括方法名、参数列表和返回类型。方法体包含实际执行的代码。
2. 方法通用格式各部分解释
[修饰符] 返回类型 方法名([参数列表]) {
// 方法体
// 执行的代码
return 返回值; // 如果方法有返回值,使用return语句
}
-
修饰符:如
public
、private
、static
等,表示方法的访问权限或其他属性。 -
返回类型:
比如:
return 1-> 方法上的返回值类型写int
return 2. 5 -> 方法上的返回值类型写double
return “” -> 方法上的返回值类型写string
如果没有返回值,不要写具体的返回值类型了,要写void -
方法名:方法的名字(小驼峰式)。
-
参数列表:方法需要的输入参数,可以有多个,用逗号分隔。
-
方法体:方法执行的具体代码。
3. 无参无返回值方法使用
这种方法没有参数,也不返回任何值。常用于执行一些不需要输入数据或不需要返回结果的任务。
public static void 方法名(数据类型 变量名){
方法体
}
无参无返回值调用greet方法来输出"Hello, welcome!"。
class MyClass {
// 无参无返回值方法
void greet() {
System.out.println("Hello, welcome!");
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.greet(); // 调用无参无返回值方法
}
}
4. 有参无返回值方法使用
有参数的无返回值方法会根据传入的参数进行操作,但不会返回任何结果。
public static void 方法名(数据类型 变量名){
方法体
}
调用printMessage方法,传递字符串参数"Hello, Java!"到控制台输出。
class MyClass {
// 有参无返回值方法
void printMessage(String message) {
System.out.println(message);
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.printMessage("Hello, Java!"); // 传递参数
}
}
5. 无参有返回值方法使用
无参数的有返回值方法返回一个结果,通常用于计算或获取某个值。
public static 返回值类型 方法名(){
方法体
return 结果
}
调用getNumber方法获取返回值,然后将这个值打印到控制台。
class MyClass {
// 无参有返回值方法
int getNumber() {
return 42;
}
public static void main(String[] args) {
MyClass obj = new MyClass();
int result = obj.getNumber(); // 获取返回值
System.out.println(result);
}
}
6. 有参有返回值方法使用
有参数且有返回值的方法根据输入参数进行计算并返回一个结果。
public static 返回值类型 方法名(参数){
方法体
return 结果
}
调用sum方法计算两个整数10和20的和,并打印出结果
class MyClass {
// 有参有返回值方法
int sum(int a, int b) {
return a + b;
}
public static void main(String[] args) {
MyClass obj = new MyClass();
int result = obj.sum(10, 20); // 传递参数并获取返回值
System.out.println(result); // 输出 30
}
}
7. 形式参数和实际参数说明
-
形式参数:方法定义时声明的参数(方法头中的参数)。
-
实际参数:调用方法时传递给方法的具体值。
示例:
class MyClass { public static void main(String[] args) { // 实参:"树小振", greet("树小振"); } public static void greet(String name) { // 形参:name System.out.println("Hello, " + name); } }
8. 参数和返回值使用时机
- 参数:
当想将方法A的数据传递到方法B时,那么定义方法B时就需要带个参数,在方法A中调用方法B时,可以将方法A中的数据通过参数传递到方法B中 - 返回值:
调用方法A时,想要方法A的结果,去参与其他的操作,那么方法A就需要将自己的结果返回
9. 变量作为实参使用
在方法调用时,可以传递变量作为实参,这些变量的值将作为输入传递给方法。
class MyClass {
public static void main(String[] args) {
int a = 10;
int b = 20;
sum(a, b);
}
public static void sum(int a, int b) {
int result = a + b;
System.out.println("a + b = " + result);
}
}
10. 方法注意事项
10.1. 方法名应简洁且具有描述性
方法名应清晰地描述方法的功能和目的,避免过长或过于模糊的名称,便于理解和维护。
10.2. 方法的参数和返回类型应根据具体业务需求设计
参数和返回类型应根据方法的实际功能来设计,确保方法的输入输出符合业务需求。
10.3. 如果方法没有返回值,返回类型必须是 void
如果方法没有返回值,应声明返回类型为 void
,这意味着该方法仅执行操作而不返回任何结果。
10.4. 方法调用时,参数的类型和数量必须与定义时一致
方法调用时,传入的实参类型、数量和顺序必须与方法声明时的形参一致,否则会导致编译错误。
10.5. 方法不调用不执行
方法必须被显式调用才能执行。如果一个方法没有被调用,它就不会被执行。
10.6. 方法的执行顺序只和调用顺序有关
方法的执行顺序是由调用顺序决定的,调用顺序按代码中出现的顺序依次执行。
10.7. 方法之间不能互相嵌套
在 Java 中,一个方法不能直接嵌套定义在另一个方法内部。方法定义必须在类体内,而不是其他方法内。
10.8. void 不能与 return 结果 共存,但 void 能与 return 共存
void
表示方法没有返回值,因此不能与return
语句同时返回结果。如果声明了void
类型,return
语句只能用于结束方法执行。- 示例:
- 错误:
void
方法中不能有return
返回值:public void example() { return 42; // 错误,不能在void方法中返回结果 }
- 正确:
void
方法中可以使用return
结束方法:public void example() { return; // 正确,return 仅结束方法 }
- 错误:
10.9. 一个方法中不能连续写多个 return
- 一个方法只能有一个
return
语句来返回值或结束方法。虽然可以根据条件写多个return
,但每个分支中的return
必须有明确的返回结果或结束方法。 - 示例:
- 正确:
public int add(int a, int b) { if (a > b) { return a + b; } else { return b + a; } }
- 错误:
public void example() { return; // 第一个 return return; // 错误,不能有多个 return }
- 正确:
10.10. 调用方法时要确保方法存在,否则会报错
在调用一个方法之前,必须确认该方法已定义。如果调用一个不存在的方法,编译时会报错。方法名、参数类型、数量以及返回类型都必须匹配。
11. 初学者如何学习方法小技巧
11.1 初学者怎么写方法
11.1.1. 先定义,再调用
- 在 Java 中,方法的调用必须在方法定义之后,否则编译时会找不到方法的定义。
11.1.2. 没有返回值的方法
- 如果方法没有返回值,直接在方法内部输出结果。比如使用
System.out.println()
打印结果。 - 示例:
public void printMessage() { System.out.println("Hello, World!"); // 直接在方法内部输出 }
11.1.3. 带返回值的方法
- 如果方法有返回值,调用方法之后,使用一个变量接收方法的返回结果,然后输出这个变量。
- 示例:
public int addNumbers(int a, int b) { return a + b; // 返回计算结果 } public static void main(String[] args) { MyClass obj = new MyClass(); int result = obj.addNumbers(10, 20); // 用变量接收返回值 System.out.println(result); // 输出返回的结果 }
11.1.4. 调用方法:
- 直接调用:适用于没有返回值的方法。通过方法名直接调用。
printMessage(); // 调用无返回值的方法
- 打印调用:适用于有返回值的方法,但不推荐这种方式。直接在
System.out.println()
中调用方法。System.out.println(addNumbers(10, 20)); // 直接打印返回值
- 赋值调用:适用于有返回值的方法。通过赋值给变量来接收方法的返回值。
int sum = addNumbers(10, 20); // 用变量接收方法返回值
11.2 初学者如何学习方法小技巧
11.2.1. 命名规范
- 方法名通常使用小写字母开头的驼峰式命名法(camelCase)。例如:
calculateSum
。 - 方法名应简洁明了,能够表达出方法的功能。
11.2.2. 注释
- 在方法头部添加简要注释,描述方法的功能、参数和返回值。这样可以帮助自己和他人理解方法的作用。
- 示例:
/** * 计算两个整数的和 * @param a 第一个整数 * @param b 第二个整数 * @return 两个整数的和 */ public int addNumbers(int a, int b) { return a + b; }
11.2.3. 分步骤学习
- 初学者可以先从简单的无参、无返回值的方法开始,逐步理解方法的基本结构和调用方式。
- 逐步过渡到有参数和返回值的方法,并学会如何在方法中处理参数和返回值。
①方法调用:先定义方法,再调用方法。无返回值的方法直接输出结果;有返回值的方法可以通过变量接收结果并输出。
②命名和注释:命名时遵循驼峰式命名法,方法上方加注释,描述功能和参数,帮助代码阅读和维护。
③分步学习:从简单的无参无返回值方法开始,逐步学习更复杂的带参和有返回值的方法。
12. 数组作为方法参数传递
数组可以作为方法的参数传递,允许你在方法中处理大量数据。
void printArray(int[] arr) {
for (int num : arr) {
System.out.println(num);
}
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
obj.printArray(numbers); // 传递数组作为参数
}
13. 数组作为方法返回值返回
方法可以返回一个数组,这对于返回一组数据特别有用。
int[] getNumbers() {
return new int[] {1, 2, 3, 4, 5};
}
public static void main(String[] args) {
int[] numbers = obj.getNumbers(); // 获取数组作为返回值
for (int num : numbers) {
System.out.println(num);
}
}
14. 方法的重载基本使用
方法重载是指在同一个类中,可以定义多个方法名相同,但参数列表不同(参数个数或类型不同)。返回类型可以相同,也可以不同。
public class Demo1OverLoad {
public static void main(String[] args) {
sum(1,2);
sum(1,2,3);
sum(1,2,3,4);
}
//两个整数相加
public static void sum(int a,int b){
System.out.println(a+b);//3
}
//三个整数相加
public static void sum(int a,int b,int c){
System.out.println(a+b+c); //6
}
//四个整数相加
public static void sum(int a,int b,int c,int d){
System.out.println(a+b+c+d);//10
}
}
15. 方法重载的注意事项
方法重载时,方法名相同,但参数类型或参数个数必须不同,不能仅通过返回类型区分。
重载方法调用时,Java会根据传入的参数类型来选择匹配的方法。
// 错误示例:只有返回类型不同,无法区分重载方法
// int add(int a, int b) { return a + b; }
// double add(int a, int b) { return a + b; } // 这是错误的,会引起编译错误