可变长参数的方法的定义格式: 访问修饰符 是否静态 返回值类型 方法名称(数据类型... 参数){ 方法体; }
在JDK5之后的新特性,可以在方法中定义不定长的参数 语法的格式: 访问修饰符 方法是否静态 方法的返回值 方法名(方法类型 ... 可变长的参数名){ 方法体; //这里作参数的判断; } 可变长参数的特点: 如果同时定义了定长参数的方法的不定长参数的方法,如果定长 参数方法和不定长的参数的方法同属满足调用的需求,则以定长 参数的方法调用为准。 对于同时含有定长和不定长参数的方法而言,不定长 参数一定要放在可变长参数的列表的最后一个 不可能同时存在两个可变长参数的方法
代码示例如下:
public class Demo06budingchangcanshu { public static void show(String ...args){ if (args.length==0){ System.out.println("该方法是无参方法"); }else { for (String arg : args) { System.out.println("该方法的参数是:"+arg+""); } } } public static void main(String[] args) { show("张三","李四","王五"); } }
方法的递归: 在一个方法的内部进行方法的自己调用自己,以完成特定的功能 注意点: 递归不能出现“死递归” 意思是递归跟循环一样,不能出现无线循环。 斐波那契数列的递归方法如下所示:
public class Demo02feibonaqi { public static void main(String[] args) { System.out.println(fun(3)); } public static int fun(int n){ if (n==0){ return 0; }else if (n==1){ return 1; } return fun(n-1)+fun(n-2); } }
递归实现1-100的整数之和的打印:
public class Demo01 { public static void main(String[] args) { System.out.print("1到100的和为:" +dididi(100)); } public static int dididi(int n){ if (n==1){ return 1; } return n+dididi(n-1); } }
打印某一年的某一个月的日历代码如下所示:
package Weeks02.days03_qianfeng; import java.util.Scanner; public class Demo01lianxirili { public static boolean isReadyear(int year){ return (year%4==0&&year%100!=0 || year%400==0); } public static int getmonthdates(int year,int month){ switch (month){ case 4: case 6: case 9: case 11: return 30; case 2: return isReadyear(year) ? 29: 28; default: return 31; } } public static int getyearsdates(int year){ int totalyears=0,dates=0; for (int i=1900;i<year;i++){ if (year%4==0&&year%100!=0 || year%400==0){ dates=366; }else { dates=365; } } return totalyears+=dates; } public static int getmonthsdates(int year,int month){ int dates=0,totalmonth=0; for (int i=1;i<month;i++){ switch (i){ case 4: case 6: case 9: case 11: dates=30; break; case 2: dates= isReadyear(year) ? 29: 28; break; default: dates= 31; break; } } return totalmonth+=dates; } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入当前年份"); int year = scanner.nextInt(); System.out.println("请输入当前月份"); int month = scanner.nextInt(); int keep=(getmonthsdates(year,month)+getyearsdates(year)+1)%7; int count=0; System.out.println("日\t一\t二\t三\t四\t五\t六\t"); for (int i=1;i<=keep;i++){ System.out.print("\t"); count++; } for (int j=1;j<=getmonthdates(year,month);j++){ System.out.print(j+"\t"); count++; if (count%7==0){ System.out.println(); } } } }