一、命令行传参:
写一个如上程序来进行命令行传参便于理解我们的main方法:
package methods;
public class Demo03 {
public static void main(String[] args) {
for (int i = 0;i<=args.length;i++){
System.out.println("args["+i+"]"+args[i]);
}
}
}
因为main方法参数为空,所以需要我们进行传参,这个在IDEA里是不好传参的:
所以,来使用命令行传(这才是重点):
先看一下我这个类Demo03放哪里了:
打开命令行窗口(文件路径前+cmd空格) :
生成 .class 文件 :
没啥大问题。
接下来运行 .class文件:
这个时候发现它找不到我们的 .class文件
那是因为我们把文件放在了包里,我们要退退退退到src目录下才可执行,并且要附上包名:
这是运行成功了,只是还没传参,传个参:
这下我们命令行传参就成功了,而且还理解到了main方法里的参数,一举两得!
因为平时需要参数的数量不是固定的,有时候会特别的多,这个时候使用方法重载会大大增加代码量,这个时候就需要一个东西,它就是可变参数。
二、可变参数:
上图:
直接来看例子:
package methods;
public class Demo04 {
public static void main(String[] args) {
// 创建类对象
Demo04 demo04 = new Demo04();
// 引用方法
demo04.methods(1,2,3,4);
}
public static void methods(int ...number){//可变参数(本身是一个数组)
System.out.println(number[3]);
}
}
通过可变参数就可以引用多个数了。
但是可变参数只能放在最后一个,这样就错了。
在看一个例子(对输入的数进行排序,输出最大值):
package methods;
public class Demo05 {
public static void main(String[] args) {
// 创建类对象
Demo05 demo05 = new Demo05();
demo05.max(1,2,3,4,5);
demo05.max(2,4,6,8);
}
public static void max(double...number){
if(number.length==0){
System.out.println("没有数字");
return;
}
double result = number[0];
for(int i = 1;i < number.length;i++){
if(number[i] > result){
result=number[i];
}
}
System.out.println("The max is:"+result);
}
}
输出结果: