JAVA方法详解
package method;
public class Demo01 {
public static int add(int a,int b){
return a+b;//a,b是形式参数,用来定义方法
} //存在返回值
public static void main(String[] args) {
int sum=add(1,2);//1,2是实际参数
System.out.println(sum);
}
}
-
方法重载
方法重载就是在一个类里,它的方法名称相同,但是参数不同,包括参数的个数、类型、排列顺序。
但方法的返回类型可以相同也可以不同。
实现理论:方法名称相同时,编译器根基调用方法的参数个数、类型、等去逐个匹配,选择对应的方法。
package method; public class Deom01 { public static int larger(int a,int b){ if(a>b){ return a; } else{ return b; } } public static double larger(double a,double b){ if(a>b){ return a; } else{ return b; } } public static void main(String[] args) { int a=larger(10,20); //重载 double b=larger(2.5,5.5); } }
-
命令行传参
运行程序的时候,通过命令行可以给他传递参数。
-
可变参数
本质是一种数组
package method;
public class Demo03 {
public void test(int x,int ...i)//可变参数在最后一个
{
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
}
public static void main(String[] args) {
Demo03 demo03=new Demo03();
demo03.test(1,1,2,3);//必须是同一类型的参数
}
}
package method;
import org.w3c.dom.ls.LSOutput;
import java.util.Scanner;
//递归调动阶乘
public class Demo04 {
public static int factorial(int n){
if(n==0||n==1)
{
return 1;
}
else
{
return n*factorial(n-1);//递归调用,自己调用自己
}
}
//n=1 1;
//n=2 2*f(1),f(1)=1;
//n=3 3*f(2),f(2)=2*f(1);
public static void main(String[] args) {
System.out.println("要求几的阶乘");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
long f=factorial(n);
System.out.println(n+"的阶乘是:"+f);
}
}
递归调用适用于基数比较小的情况,尽量不要轻易使用,太费计算机了。