方法
Java方法是语句的集合,它们在一起执行一个功能
System.out.println()是什么意思
System类中的out对象的println()方法
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
add(a)
Scanner.close();
System.out.println(a);//输出2a
}
public static int add(int a){
return a+a;
}
}
设计方法的原则
遵循原子性原则,一个方法只实现一个功能,便于后续的开发和扩展
方法的定义
修饰符 返回数值类型 (void) 方法名(参数类型 参数名){
方法体
}
void表示该方法不返回值
方法重载
同样的方法名,但是参数个数不同,或者参数数据类型不同,目的在于应对一对多情况
注意点
- 方法名必须相同
- 方法参数个数或者类型需要不同
public class Main{
public static void main(String[] args){
int a = 10;
int b = 10;
int c = 10.0;
int d = 10.0;
int e = add(a,b);
int f = add(c,d);
}
public static int add(int a,int b){
return a+b;
}
public static double add(double a,double b){
return a+b;
}
}
命令行传参
public class Main{
public static void main(String[] args){
for(int i =0;i<args.length){
System.out.println(args[i])
}
}
}
通过命令提示符传参步骤
-
javac Main.java
-
回退到src目录下
-
java Main this is test
-
输出的结果为
this
is
test
可变参数
JDK5新特性
- 每一个方法有且只有一个可变参数
- 普通参数应在可变参数前定义
public class Main {
public static void main(String[] args) {
test(1,9,4,3,25,11);
}
public static void test(int... number){
if(number.length==0){
System.out.println("此数组长度为0");
}
int result = number[0];
for (int i = 0;i<number.length;i++){
if(number[i]>result){
result = number[i];
}
}
System.out.println("该数组中最大的数为:"+result);
}
}
递归
方法调用方法自身,目的在于将复杂的问题分解,以一种较为高效的形式解决问题
递归组成部分
- 退出递归的条件
- 递归内容
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(f(n));
Scanner.close();
}
public static int f(int n){
if(n==1) return 1;
return n*(n-1); //阶乘
}
}
取球问题
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
System.out.println(f(n,m));
Scanner.close();
}
public static int f(int n,int m){
if (n<m) return 0;
if (n==0) return 1; //当小球个数为0时,终止循环
return f(n-1,m-1)+f(n-1,m);
//将n个小球分成两个部分,1和n-1,所以m从n个小球中的可能取值为:
//(1)从n-1个小球中去m个 (2)从n-1个小球中取m-1个再加上1个
}
}