Java方法
一、什么是方法
方法是语句的集合,执行某个功能,类似于函数。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的设计原则:原子性,一个方法只完成一个功能,利于后期扩展
二、方法的定义及调用
1. 方法的定义
包含一个方法头和一个方法体
- 修饰符:可选,定义了方法的访问类型。
- 返回值类型:方法可能会有返回值,没有返回值使用 void
- 方法名:是方法的名称,与参数表共同构成方法签名。
- 参数类型:调用方法时需要传递的值,参数是可选的。
- 形参:形式参数,方法被调用时用于接收外界输入的数据
- 实参:实际参数,调用方法时传递给方法的数据。
- 方法体:包含具体的执行语句,定义了方法的功能。
2. 方法的调用
使用 static 修饰,可以在类的内部直接调用,否则要创建类的实例对象来调用。
public static void main(String[] args) {
// 调用方法并定义变量接收返回值
double max = max(97.35, 74.22);
System.out.println(max);
}
// 修饰符表示该方法是类变量,
// 返回值是double类型,方法名是max
// 需要传递两个double类型的数据
public static double max(double i, double j) {
return Math.max(i, j); // 返回两数最大值,终止方法
}
三、方法重载
重载就是在一个类中,多个方法有相同的方法名,但是形参不同。
重载的规则:
- 方法名称必须相同
- 参数列表必须不同(参数个数不同,或类型不同,或排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以构成重载
实现过程:
编译器执行方法时,会根据调用方法的参数个数、参数类型等因素去逐一匹配正确的方法,如果匹配失败,会报错。
// add方法
public static int add(int a, int b) {
return a+b;
}
// 参数的类型不同
public static double add(float a, float b) {
return a+b;
}
// 参数的个数不同
public static int add(int a, int b, int c) {
return a+b+c;
}
四、命令行传参
在运行一个程序的时候再传递数据,需要通过命令行传递参数给 main() 函数。
public static void main(String[] args) {
for(String str: args) {
System.out.println(str);
}
}
五、可变参数
JDK5 开始,Java 开始支持传递同类型的可变参数给某个方法。
在方法声明中,在指定的参数类型后加省略号 ...
一个方法中只能指定一个可变参数,同时必须是方法的最后一个参数。
public class Demo {
public static void main(String[] args) {
Demo demo = new Demo();
// 传递的参数类型要和形参类型匹配,全部是 int型
demo.test(0,1,2,3,4,5);
// 也可以传递数组:demo.test(0, new int[]{1,2,3,4,5});
}
// 'int... i' 必须写到参数列表的最后!
// 错误写法:(int... i, int m)
public void test(int m, int... i) {
System.out.println(m); // 输出第一个参数 0
for (int x: i) {
System.out.print(x + "\t"); // 输出1 2 3 4 5
}
}
}
六、递归
某个方法在执行的过程中调用自身,通俗地说,就是我调我自己。
利用递归可以用简单的程序解决一些复杂的问题,大大减少代码量。
递归包含两个部分:
- 递归头:什么时候不再调用自身,如果没有,会陷入死循环,这是非常可怕的
- 递归体:什么时候需要调用自身
主要是学习递归思想!当递归的深度太大,性能消耗十分严重,少用。