JAVA学习笔记06-命令行传参、可变参数、递归
命令行传参
有时候我们希望在运行一个程序的时候,能给它传递一些参数,这个时候我们就需要用到传递命令行参数到main()函数中实现。
在JAVA中,main()方法是JAVA应用程序的入口方法,程序在运行的时候,第一个执行的方法就是main()方法。main()方法和其他的方法有很大的不同。main()方法可以以字符串的形式接收命令行参数,然后在方法体内进行处理。
接下来我们创建一个JAVA程序,然后用这个程序输出我们传入的参数。
public class Demo1 {
public static void main(String[] args)
{
int nLen = args.length;
for (int i = 0; i < nLen; i++)
{
System.out.println("args" + args[i]);
}
}
}
首先我们用命令行进入这个类的文件夹下面,通过javac命令生成字节码文件:

需要注意的是,我们如果直接在当前的目录下去运行Demo1这个文件,会报错:

因为我们当前的类是在com.methods这个包下的,所以我们需要在src目录下运行,而且执行程序需要写这个类文件的全路径:

可以发现程序成功运行了,这个时候,我们给程序传递参数试试,传递的参数需要用空格隔开:

可变参数
在具体实际开发过程中,有时方法中参数的个数是不确定的。为了解决这个问题, J2SE 5.0版本中引入了可变参数的概念。
它的使用方法是:
在指定的参数类型后面加上省略号`...`
需要注意的是,一个方法中只能指定一个可变参数,也就是说参数列表里面你不能全是可变的参数,可变参数有且只能有一个。而且可变参数必须放在参数列表的末尾,也就是其余的普通参数必须在可变参数的前面声明。
示例代码如下:
public static void main(String[] args)
{
Demo1 obj = new Demo1();
obj.test(1, 2, 3, 4, 5);
}
public void test(int... num)
{
for (int i = 0; i < num.length; i++)
{
System.out.println(num[i]);
}
}
运行结果如下:

递归
什么是递归呢?
A函数调用B函数,我们能够很容易的理解,比如main()函数调用test()函数,那么如果一个函数自己调用自己,也就是test()函数自己调用test()函数,那么这样的调用就叫做递归调用。
递归有什么作用?
利用递归可以用简单的程序来处理一些复杂的问题,它通常能把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归的结构?
- 递归头:什么时候不再调用自己,如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自己。
代码示例:用递归实现阶乘
public static void main(String[] args)
{
int nRes = Factorial(5);
System.out.println(nRes);
}
public static int Factorial(int num)
{
if (num == 1)
{
return 1;
}else
{
return num * Factorial(num - 1);
}
}
运行结果

浙公网安备 33010602011771号