绪
在程序设计中,为了减少代码工作量,提高代码可读性和复用率,我们通常会将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集,让这段代码可以在程序中被多次调用,从而避免了重复编写相同的代码。
方法必须先创建才可以使用,该过程成为方法定义。
方法在创建后并会自主运行,需要使用时才执行,使用的过程称为方法调用。
下面是在方法定义、使用时的一些介绍:
一、方法的定义和调用
1、无参数方法
//定义格式
public static void 方法名 ( ) {
// 方法体;
}
//调用
方法名();
//案例分析
public class Example {
public static void main(String[] args) {
// 调用无参方法,输出信息
printMessage();
}
// 定义无参方法
public static void printMessage() {
System.out.println("Hello World!");
}
}
无参方法调用内存图解:
2、带参数方法
//定义格式
public static void 方法名 (参数1) {
方法体;
}
public static void 方法名 (参数1, 参数2, 参数3...) {
方法体;
}
//调用
方法名 (参数1);
方法名 (参数1, 参数2, 参数3...);
//案例分析
public class Example {
public static void main(String[] args) {
// 调用带参方法
add(3,4);
}
// 定义带参方法,输出两个数的和
public static void add(int a,int b) {
System.out.println(a+b);
}
}
对于带参方法,搞清楚形参和实参的关系是关键。
(1)形参:方法定义中的参数,指的是在方法中用于进行计算操作的的参数。
(2)实参:方法调用中的参数,指的是在调用方法时传递给方法的值。
//案例
public class Example {
public static void main(String[] args) {
int a = 5;
int b = 10;
int result = sum(a, b);
System.out.println("The result is: " + result);
}
public static int sum(int num1, int num2) {
return num1 + num2;
}
}
/*
在案例中,定义了一个sum方法,它接受两个参数(也称为形参)num1和num2。
然后,在main方法中,我们定义了两个变量a和b,它们的值分别为5和10。
我们将这些变量作为参数(即实参)传递给sum方法,然后将该方法的返回值存储在result的变量中并输出。
*/
形参和实参之间的相互影响:
①基本数据类型的参数,形式参数的改变,不影响实际参数。
原理:每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失。
②引用类型的参数,形式参数的改变,影响实际参数的值。
原理:引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果。
3、方法定义通用格式
//方法定义通用格式
public static 返回值类型 方法名(参数) {
方法体;
return 数据 ;
}
/*
public static 修饰符
返回值类型 方法操作完毕之后返回的数据的数据类型,如果方法操作完毕,没有数据返回,这里写
void,且方法体中一般不写return
方法名 调用方法时候使用的标识
参数 由数据类型和变量名组成,多个参数之间用逗号隔开
方法体 完成功能的代码块
return 如果方法操作完毕,有数据返回,用于把数据返回给调用者
*/
在定义方法时,我们应该明确以下信息:
(1)明确返回值类型:明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型。
(2)明确参数:明确参数的类型和数量。
(3)方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错,多个参数之间使用逗号分隔。
在调用方法时,应该注意:
(1)调用方法时,传递参数的数量与类型必须与方法定义中的设置匹配,否则程序将报错。
(2)若方法返回值的类型为void,直接调用即可,非void类型的方法,方法的返回值使用变量接收,否则该返回值将无意义。
二、方法重载
方法重载指的在同一个类中定义的多个重名的方法,但这些方法的参数类型、参数个数不一致。
当我们在同一个类中定义了多个同名但参数不同的方法时,Java编译器会根据传入的参数类型和个数来自动地选择调用适合的方法。
//案例
public class Calculator {
public void add(int num1, int num2) {
int sum = num1 + num2;
System.out.println("sum= " + sum);
}
public void add(double num1, double num2) {
double sum = num1 + num2;
System.out.println("sum=" + sum);
}
public void add(String str1, String str2) {
String result = str1 + str2;
System.out.println("新字符串:" + result);
}
}
/*
在这个例子中,定义了三个名为add的方法,它们分别接受两个int、两个double以及两个String类型的参数,然后分别对它们进行求和或字符串拼接。
在调用这些方法时,我们可以根据需要选择传入不同类型的参数。
*/
方法重载提高了代码的可重用性和灵活性,并且让我们可以在同一个类中使用同样的方法名来实现不同的功能。
结论
今天有点热,该洗澡了。