前言
提示:这里可以添加本文要记录的大概内容:
本篇博客主要介绍Java中方法的基本用法,方法重载,重点需要掌握方法中实参和形参的关系。
提示:以下是本篇文章正文内容,下面案例可供参考
一、方法的基本用法
1.什么是方法(method)?
方法存在的意义:
2.方法定义语法
基本语法:
代码示例:用一个方法实现两个整数相加
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 方法调用
int ret = add(a,b);
System.out.println(ret);
}
// 方法定义
public static int add(int a,int b){
return a + b;
}
}
//运行结果
30
注意事项:
3.方法调用的执行过程
基本规则:
示例:
public class Blog {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("第一次调用方法之前");
int ret = add(a, b);
System.out.println("第一次调用方法之后");
System.out.println("ret = " + ret);
System.out.println("第二次调用方法之前");
ret = add(30, 50);
System.out.println("第二次调用方法之后");
System.out.println("ret = " + ret);
}
public static int add(int x, int y) {
System.out.println("调用方法中 x = " + x + " y = " + y);
return x + y;
}
}
//运行结果
第一次调用方法之前
调用方法中 x = 10 y = 20
第一次调用方法之后
ret = 30
第二次调用方法之前
调用方法中 x = 30 y = 50
第二次调用方法之后
ret = 80
4.实参和形参的关系(重要)
在Java中,方法的参数传递只有值传递,所谓的值传递就是把实参的值拷贝一份给形参,对实参没有任何影响。
示例:
public class Blog {
public static void main(String[] args) {
//x和y是主方法中的x和y,实参
int x = 10;
int y = 20;
//调用swap方法时,将x的值10和y的值20拿出来复制一份传递给a和b
swap(x,y);
System.out.println("x = " + x + ",y = " + y);
}
//调用swap时,就有实参到形参的传递,将实参的值拷贝一份赋值给形参
//swap-x = main-x = 10;swap-y = main-y = 20
private static void swap(int x, int y) {
System.out.println("调用swap方法中");
//交换的都是swap-x和swap-y对main-x和main-y不造成任何影响
int temp = x;
x = y;
y = temp;
System.out.println("x = " + x + ",y = " + y);
}
}
//运行结果
调用swap方法中
x = 20,y = 10
x = 10,y = 20
在方法外部交换两个局部变量的场景在Java中压根就不存在
解决这个问题需要引入引用数据类型(数组或对象)
注意:
方法的返回值可有可无,没有返回值的方法使用void声明,在没有返回值的方法中,仍然可以使用return;表示提前结束方法的调用。
public class MethodTest {
public static void main(String[] args) {
printNum(100);
}
//传入一个num,输出第一个从1-num的3的倍数
public static void printNum(int num){
for (int i = 1; i <= num; i++) {
if (i % 3 == 0){
System.out.println(i);
//直接终止本次方法的调用,返回调用处继续执行
return;
}
}
}
}
//运行结果
3
二、方法的重载
1.方法重载的概念及基本用法
示例:
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
以上方法的功能为计算不同类型参数的和,功能相同,只是参数列表不同,构成重载。
2.方法重载的规则
示例:
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
以上的三个方法只有参数类型,或者参数的个数不同,所要实现的功能都是相同的,都是计算参数的和,使用同一个名字,提供不同版本的实现,构成方法重载。
//编译错误,以下两个方法不构成方法重载,是发生了方法重复
public static void m4(int a,int b){}
public static void m4(int b,int a){}
//以下两个方法不构成重载,只是返回值类型不同
public static int add(int x, int y) {
return x + y;
}
public static double add(int x, int y) {
return x + y;
}