命令行传参,可变参数,递归

命令行传参

  • 有时候希望运行一个程序时,再传递给它消息。这要靠传递命令行参数给main()函数实现

  public class Method3 {
   public static void main(String[] args) {
       for (int i=0;i< args.length;i++){
           System.out.println("args["+i+"]: "+args[i]);
      }
  }
}

命令行传参,可变参数,递归命令行传参,可变参数,递归

 

 

可变参数

  • JDK1.5开始,Java支持传递通类型的可变参数给一个方法

  • 在方法声明中,在指定参数类型后加一个省略号(...)

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明

  
public class Method4 {
   public static void main(String[] args) {
       Method4 m4 = new Method4();
       m4.test(2);
?
       printMax(34,3,5,6,55.5);
       printMax(new double[]{1,4,2,8,6});
  }
?
   public void test(int... i){
       System.out.println(i);//打印数组i的地址值   [I@14ae5a5   [ 数组 I int类型 @在哪里
       System.out.println(i[0]);
  }
?
   public static void printMax(double... numbers){
       if(numbers.length == 0){
           System.out.println("No argument passed");
           return;
      }
?
       double result = numbers[0];
?
       //找出最大值
       for (int i = 1; i < numbers.length; i++) {
           if(numbers[i] > result){
               result = numbers[i];
          }
      }
       System.out.println("The max value is " + result);
  }
}

递归

  • 递归就是:A方法调用A方法!就是自己调用自己

  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环

    • 递归体:什么时候需要调用自身方法。

  
public class Method5 {
   public static void main(String[] args) {
       System.out.println(f(5));
  }
?
   //阶乘   5!=5*4*3*2*1
   public static int f(int n){
       if(n == 1){
           return 1;
      }else if(n > 1){
           return n*f(n-1);
      }else {
           System.out.println("error number");
           return 0;
      }
  }
}

 

命令行传参,可变参数,递归

上一篇:idea maven mybatis log4j.properties


下一篇:Prometheus学习(一)之Prometheus简介