一、方法的概述
方法:一种语法结构,它可以把一段代码封装成一个功能,以便重复调用
作用:提高代码的复用性,提高开发效率,让程序逻辑更清晰
方法完整的定义格式:
注意:
1. 方法定义是,返回值类型和形参列表可以按照需求进行填写,如果方法没有结果数据需要 返回,返回值类型申明为:void,此时方法内部不可以使用return返回数据
2. 方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了
3. 没有参数,且没有返回值类型(void) 申明的方法,称为无参数、无返回值的方法,依次类推
二、方法的调用
程序中必须调用方法,才能使方法跑起来
方法的调用格式:方法名称(…)
有返回值类型声明的方法的调用:
1. 赋值调用:定义变量接收方法的结果
2. 输出调用:放在输出语句中调用
3. 直接调用:方法还是会执行,只是返回的结果我们不要了
无返回值方法的调用:
直接调用一下
三、方法在计算机中的执行
方法被调用时,是进入到栈内存中运行的,栈内存的特性是先进后出
保证一个方法调用完另一个方法后,可以回来
示例:
四、方法参数传递
值传递
值传递:指的是在传输实参给方法的形参的时候,传输的是实参变量中存储的值的副本
实参:指的是在方法内部定义的变量
形参:指的是定义方法时 "( ……)" 中所声明的参数
示例:
注意:无论是基本数据类型还是引用数据类型的参数,都是满足值传递的,基本类型的参数传输 的是存储的数据,引用类型的参数传输的是存储的地址
import java.util.Arrays; public class ArrayPassByValueExample { // 一个方法,它接受一个整数数组作为参数,并修改其中的元素 public static void modifyArray(int[] array, int index, int newValue) { if (index >= 0 && index < array.length) { array[index] = newValue; } else { System.out.println("Index out of bounds"); } } public static void main(String[] args) { // 创建一个整数数组 int[] numbers = {1, 2, 3, 4, 5}; // 打印原始数组 System.out.println("Original array: " + Arrays.toString(numbers)); // 调用方法修改数组中的元素 modifyArray(numbers, 2, 100); // 修改索引为2的元素为100 // 打印修改后的数组 System.out.println("Modified array: " + Arrays.toString(numbers)); } } // 注意:为了使用Arrays.toString方法,需要导入java.util.Arrays类 // import java.util.Arrays;
五、方法重载
一个类中,出现多个方法的名称相同,但它们的形参列表是不同的,那么这些方法就称为方法重载
示例:
public class OverloadingExample { // 第一个重载方法,不接受任何参数 public void printMessage() { System.out.println("没有参数的printMessage方法被调用"); } // 第二个重载方法,接受一个String参数 public void printMessage(String message) { System.out.println("带有String参数的printMessage方法被调用: " + message); } // 第三个重载方法,接受两个int参数 public void printMessage(int number1, int number2) { System.out.println("带有两个int参数的printMessage方法被调用: " + number1 + ", " + number2); } // 第四个重载方法,接受一个double参数 public void printMessage(double number) { System.out.println("带有double参数的printMessage方法被调用: " + number); } public static void main(String[] args) { OverloadingExample example = new OverloadingExample(); // 调用没有参数的方法 example.printMessage(); // 调用带有String参数的方法 example.printMessage("Hello, World!"); // 调用带有两个int参数的方法 example.printMessage(10, 20); // 调用带有double参数的方法 example.printMessage(3.14); } }
注意:
1. 形参列表不同:形参的个数,类型,顺序不同,不关心形参变量的名称是否相同
2. 修饰符和返回值类型不能作为函数重载的标志
方法重载的好处:
1. 方法名相同标记是同一个功能,可读性好
2. 形参列表不同,体现功能的差异化,还可以提高开发效率
六、return关键字
return:可以用在无返回值的方法中
作用:立即跳出并结束当前方法的执行
示例:
public class ReturnTypeExample { // 定义一个方法,返回字符串 public static String greet() { return "Hello, World!"; // 返回字符串值 } // 注意:下面的方法是错误的,因为返回类型与声明的返回类型不匹配 // public static int greetWrong() { // return "Hello, World!"; // 错误:不能返回字符串作为int值 // } public static void main(String[] args) { String greeting = greet(); // 调用greet方法,并将返回值存储在greeting变量中 System.out.println(greeting); // 输出结果 } }
六、方法的注意事项
1. 方法的编写顺序无所谓
2. 方法与方法之间是平级关系,不能嵌套定义
3. 方法的返回值类型为void (无返回值),方法内则不能使用return返回数据,如果方法的返回 值类型写了具体类型,方法内部则必须使用return返回对应类型的数据
4. return语句下面,不能编写代码,因为永远执行不到,属于无效的代码
5. 方法不调用就不执行,调用时必须严格匹配方法的参数情况
6. 有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无 返回值方法的调用只能直接调用