JAVA 基础 -方法的使用
一、什么是方法?
-
是能够模块化的组织代码(当代码规模比较复杂的时候)。
2.做到代码被重复使用, 一份代码可以在多个位置使用。
-
让代码更好理解更简单。
-
直接调用现有方法开发, 不必重复造轮子。
例如:之前写过的代码:计算1!+2!+3!+4!的值。
public class Test { public static void main(String[] args) { int i = 1; int sum = 0; for (; i < 5; i++) { int num = 1; for (int j = 1; j <= i; j++) { num*=j; } sum +=num; } System.out.println(sum); } }
输出值:33
但是,此时运用的是双循环,在更复杂的情况下,很容易让人混淆。
此时调用方法,可以让我们的思路更加清晰。
二、方法的定义以及语法
1.基本语法
//方法调用 public static 方法返回值 方法名称([参数类型]){ return 返回值; } //方法调用 返回值变量 = 方法名称(实参);
2.方法调用被执行时
基本规则
定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
当方法被调用的时候, 会将实参赋值给形参.
参数传递完毕后, 就会执行到方法体代码.
当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行.
示例:
import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int sum = 0; for (int i = 1; i <= n; i++) { int b = factor(i); sum+=b; }System.out.println("1至"+n+"阶乘和为:"+sum); } public static int factor(int num){ int sum = 1; for (int i = 1; i <=num; i++) { sum*=i; } return sum; } }
3.实参与形参的关系
代码如下:
class Test {
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 = 10 b = 20
此时对于方法swap的调用,我们只是将main函数中的a,b的值拿出来拷贝一份给方法调用中的形参,无论调用swap中的值怎样变换,main函数中的实参都不会变化的。
我们调用的方法,其形参存储在”栈“中,调用完毕后其数据就自动销毁。
那么要实现参数的互换,我们应该用引用类型参数来实现。(定义数组实现)
代码如下:
class Test {
public static void main(String[] args) {
int[] arr = {10, 20};
swap(arr);
System.out.println("a = " + arr[0] + " b = " + arr[1]);
}
public static void swap(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
}
运行结果:a = 20 b = 10
三、方法的重载
1.方法重载的定义
在同一个”类“中,定义了若干个方法名称相同,参数数列表不同的一组方法,与返回值无关。
public class HomeWork4 {public static int Big (int a,int b){
int max;
max = Math.max(a,b);
return max;
}
public static double Big (double a,double b){
double max;
max = Math.max(a,b);
return max;
}
public static double Big(double a,double b,int c){
double max;
if(a>b && a>c){
max = a;
}else if (b>a && b>c){
max = b;
}else {
max = c;
}return max;
}
public static void main(String[] args) {
double a = 15.0;
double b = 20.0;
int c = 5;
double d = Big(a,b,c);
System.out.println(d);
}
}
运行结果:20.0
上述代码要求不仅可以求两个整数的最大值,还可以求两个小数的最大值,以及两个小数和一个整数的大小关系。
此时我们调用了多个方法,方法名称一样,只是参数列表不同,进行方法重载。
注意:上述返回值都是max(return max
)是可以方法重载的,但是如果返回值不同,不能构成重载。