方法对应于C语言,就相当于C语言中的函数。
方法的好处就是:
1、将重复的代码抽取,方便多次重复调用
2、方法专注做一件事情
方法中,最重要的几个元素:
1、方法的名称
2、方法的指令
3、方法的形参,(没有C语言中按址传递,只有按值传递)
4、方法的返回值类型。当没有返回值时,使用void表示
5、修饰 public和static等。
方法的标准格式:
public static 方法返回值 方法名(形参列表){
方法指令;
return 返回值;
}
方法分为定义和使用两个阶段。使用分为执行、调用。
方法的定义,就相当于制定了一个计划,但是还没实行。方法的使用就相当于按照计划去执行。
import java.util.Scanner;
/**
* 方法的定义和使用,以及方法重载
*/
public class Methods {
public static int MyMax(int x, int y) {
return x > y ? x : y;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(MyMax(a, b));
}
}
import java.util.Scanner;
/**
* 方法的定义和使用,以及方法重载
*/
public class Methods {
public static int MyMax(int x, int y) {
return x > y ? x : y;
}
public static int ThreeMax(int x, int y, int z) {
//调用两个数的最大值,三个数的最大值
return MyMax(MyMax(x, y), z);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
System.out.println(ThreeMax(a, b, c));
}
}
如上:
方法也可以支持嵌套调用。
另外,方法不会像C语言那样,必须要写在前面、或者在前面声明。在Java中,放在那里都可以;
有些时候,需要一个函数同时兼容多种参数的情况,我们就需要用到方法重载
重载就是:同一方法名字,但提供不同的版本的实现方式。
例如:
写一个,两个数相加的方法,定义的类型为int型,但是,当我们需要double型相加的时候,怎么办?难道需要写另外的法嘛?
我们可以利用方法的重载:
package Practice1229;
import java.util.Scanner;
public class AddDemo {
public static int Add(int a, int b) {
return a + b;
}
public static double Add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(Add(a, b));
double c = sc.nextDouble();
double d = sc.nextDouble();
System.out.println(Add(c, d));
}
}
如上:
我们可以发现,两个方法的方法名相同,只有参数的类型和参数列表不同,这样也是可以的,提供了不同版本的实现
但是,如果,两个方法完完全全相同,就会报错。
即:当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载。
当参数列表或者返回类型不同是,就是正确的:
重载就是:
同一方法名字,但提供不同的版本的实现方式。
当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载。
重载的规则:
方法名相同,方法的参数不同(参数个数或者参数类型)。方法的返回值类型不影响重载