方法
定义概述
- 方法是解决一类问题的步骤的有序组合;
- 方法包含与类或对象中;
- 方法在程序中创建,在其他地方被引用;
- 方法最好保持原子性,便于后期扩展;
- 方法明明规则,首字母小写,驼峰规则。
方法定义
-
修饰符
-
返回值类型
-
方法名
-
参数
-
方法体
package method; public class AddMethod { public static void main(String[] args) { int sum=add(1,2); } // 修饰符 返回值类型 方法名 参数 public static int add(int a, int b) { //方法体 return a + b; } }
方法调用
- 如果方法有返回值,则方法调用被当作一个值;
- 如果方法没有返回值,则方法调用一定是一条语句;
- return终止方法
package method; public class Max { public static void main(String[] args) { //调用max方法,传递两个参数 int max=max(10,12); System.out.println(max); } //定义mx方法,包含a b两个形参 public static int max(int a,int b){ // a b 如果相等 if(a==b){ System.out.println("两个数相等"); return 0;//终止方法 } // a>b 返回a,否则返回b if (a>b){ return a; }else{ return b; } }
方法重载
- 方法名称相同;
- 参数必须不同(参数类型、参数数量、排列顺序等);
- 返回值类型可以相同也可以不同;
- 仅仅返回值类型不同不能成为方法的重载。
package method;
public class Reload {
public static void main(String[] args) {
double max=max(10,12);
System.out.println(max);
}
// 整数比大小
public static int max(int a,int b){
if(a==b){
System.out.println("两个数相等");
return 0;
}
if (a>b){
return a;
}else{
return b;
}
}
public static double max(double a,double b){
if(a==b){
System.out.println("两个数相等");
return 0;
}
if (a>b){
return a;
}else{
return b;
}
}
}
命令行传递参数
1.命令行编译时需要到类所在目录进行编译
2.运行时可在根目录加上包名运行
package method;
public class CommandLine {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
可变参数
-
一个方法只能有一个可变参数;
-
可变参数必须为方法的最后一个参数;
-
任何普通参数必须在可变参数之前声明。
package method; public class VarArgs { public static void main(String[] args) { printMax(1.8,2,3.9); } public static void printMax(double... numbers){ if(numbers.length==0){ System.out.println("方法未传递参数"); return; } double result=numbers[0]; for (int i = 1; i < numbers.length; i++) { if(numbers[i]>result){ result=numbers[i]; } } System.out.println(result); } }
递归
- 递归头:什么时候不调用自身;
- 递归体:什么时候调用自身;
- 递归调用三步骤:边界条件,前阶段,返回阶段;
- 递归会调用大量的函数,基数小时可以使用,基数过大需要采用其他算法实现。
package method;
public class Recursion {
public static void main(String[] args) {
System.out.println(f(10));
}
public static int f(int n) {
if (n == 1) {
return 1;
} else {
return n * f(n - 1);
}
}
}