方法的定义及调用
-
最好一个方法只完成一个功能 利于后期的拓展
-
方法包含于类或对象里
-
实现某个功能的语句块的集合
-
首字母小写驼峰命名
-
调用方法:对象名.方法名(实参列表)
//main方法 public static void main(String[] args) { //实际参数:调用传递 int sum=add(1,2); System.out.println(sum); //test(); } //加 //形式参数 定义 public static int add(int a,int b){ return a+b; } public static void test(){ for(int i=1;i<=1000;i++){ if(i%5==0){ System.out.print(i+"\t"); } if (i%(5*3)==0){//每行 System.out.println(); } } }
方法重载
-
一个类中有相同的函数名,参数不同
-
名称必须相同
-
参数列表必须不同(个数不同 类型不同 参数排列顺序不同)
-
返回类型可以相同也可以不同
-
仅仅返回值不同不算重载
public static void main(String[] args) { double max=max(10.0,10.0); System.out.println(max); } //比大小 public static double max(double num1,double num2){ double result=0; if(num1==num2){ System.out.println("num1=num2"); return 0;//终止方法 } if(num1>num2){ result=num1; }else{ result=num2; } return result; } //比大小 public static int max(int num1,int num2){ int result=0; if(num1==num2){ System.out.println("num1=num2"); return 0;//终止方法 } if(num1>num2){ result=num1; }else{ result=num2; } return result; } //比大小 public static int max(int num1,int num2,int num3){ int result=0; if(num1==num2){ System.out.println("num1=num2"); return 0;//终止方法 } if(num1>num2){ result=num1; }else{ result=num2; } return result; }
命令行传参
public static void main(String[] args) { for(int i=0;i<args.length;i++){ System.out.println("args["+i+"]:"+args[i]); } }
可变参数
-
在方法声明中,在指定参数类型后加一个省略号(...)
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,其他普通参数必须在他之前声明
public static void main(String[] args) { Demo04 demo04=new Demo04(); demo04.test(1,2,3,4,5); } public void test(int... i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); System.out.println(i[5]); }
递归
边界条件:边界
前阶段
返回阶段:n(n-1)
栈
能不用递归就不用递归 f(1000)
public static void main(String[] args) { System.out.println(f(4)); } //2! 2*1 //3! 3*2*1 //5! 5*2*3*2*1 public static int f(int n){ if(n==1){ return 1; }else{ return n*f(n-1); } }