目录
1.什么是方法
在Java中方法就是一个代码片段,他和C语言中的“函数”类似,方法的存在意义呢就是为了能模块化的组织代码,增强代码的可读性,并且当一段代码需要反复使用时,我们可以使用方法,多次调用即可。
例如:当我们求1到5 的阶乘和
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 5; i++) {
int tmp = 1;
for (int j = 1; j <= i; j++) {
tmp *= j;
}
sum += tmp;
}
System.out.println("sum = " + sum);
}
这种方法用了双重循环,比较容易出错
而当我们使用方法,就可以大大的优化,并且更加的通俗易懂
//求n的阶乘
public static int fac(int n){
int s = 1;
for (int i = 1; i <= n; i++) {
s = s * i;
}
return s;
}
//求1到n的阶乘和
public static int facSum(int n){
int sum = 0;
for(int i = 1; i <= n; i++) {
sum = sum +fac(i);
}
return sum;
}
public static void main(String[] args) {
System.out.println(facSum(5));
}
接下来,让我们更加具体的去了解方法。
2.方法的定义语法
// 方法定义
public static 方法返回值 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
// 方法调用
返回值变量 = 方法名称(实参...);
其中我们要注意的是在方法的定义中参数是形参,而当我们调用方法时传入的是实参,所以当我们调用方法调换两数的值是就会遇到问题:如下
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
}
当我们运行这段代码时,希望的是得到“a = 20, b = 10”,但得到的却没有发生改变,这是因为形参的改变不能影响到实参,对于基础类型来说,形参相当于实参的拷贝,这里只能传值调用,不能影响到他的地址,需要以后学习引用相关知识解决这类问题。
3.方法的重载
在使用方法时,有时我们需要一个方法可以兼容多种参数的情况,这时就需要方法的重载,在Java中可以允许同名函数的存在
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = addInt(a, b);
System.out.println("ret = " + ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = addDouble(a2, b2);
System.out.println("ret2 = " + ret2);
}
public static int addInt(int x, int y) {
return x + y;
}
public static double addDouble(double x, double y) {
return x + y;
}
同一个方法,提供不同版本的实现,我们称为是方法重载
4.重载的规则
如果一个类的两个方法(无论是在一个类中声明的还是都有一个类继承的,或者一个声明的,一个是继承的)
1.具有相同的名字
2.参数不同
3.方法的返回值类型不影响重载
则称这为方法的重载。