String args[]或者String[] args表示给主方法传一个字符串数组.
而args是一个字符串数组的变量名,不是关键字,
是arguments的缩写,只是一个默认名,一般都习惯性照写.
class Example{
public static void main(String args[]){
System.out.println("This is a simple Java program.");
}
}
疑问:
既然String args[]或者String[] args表示给主方法传一个字符串数组,那么System.out.println(args[]);为什么是错误,args[]不就是那个字符串This is a simple Java program吗?
String args[]与This is a simple Java program是什么关系?如果没关系,为什么程序中去掉String args[]会出现错误?
不带String args[]的main函数和带String args[]的main函数有什么区别吗?
答案:
String[] args 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test 那么你在cmd运行 java test a b c 时,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中调用你输入的这些变量了。
args[]不就是那个字符串This is a simple Java program吗?
-------完全不是的,你理解不对。这样好了,你在运行的时候加个参数,比如 java test XX。然后在你的main函数里面加这段话:System.out.println("arg is"+args[0]),然后看看输出是什么?
是不是这个:
This is a simple Java program
arg is XX
你还可以试试这样,在运行时输入java test xx yy zz,并且在你的main函数里面加这段话:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看看输出是什么?
是不是:
This is a simple Java program
arg is xx yy zz
如果没关系,为什么程序中去掉String args[]会出现错误?
--------之所以去掉会出错在于,不带String args[]的main函数和带String args[]的main函数,本质上已经不是同一个函数了,java 本身不存在不带String args[]的main函数,所以当然出错了。
在每个java程序中都有一个方法,public static void main(String[] args)方法,这个参数看了好久没看懂,但是细细看来,还是挺简单的,所有的方法的参数都是一个道理,而这个main方法有所不同的是:它是所有方法中最先运行的一个,所以没有其他方法给它传递参数,所以需要靠运行时命令行输入参数,所以String args,接收的是命令行的输入,
package Test_main;
public class Test_main {
public static void main(String[] args) {
System.out.println("args[0] is "+ args[0]);
System.out.println("args[1] is "+ args[1]);
System.out.println("args[2] is ");
}
}
写了一个测试程序,在Eclipse上运行,以往都是点击一下运行就行了,今天试了几次都不行,然后把放到命令行去运行(cmd那个),编译:javac Test.java 运行:java Test hello world 显示:
args[0] is hello
args[1] is world
args[2] is
是可以运行的,心想:Eclipse这么强大这个肯定可以办到,后来网上一查,其实很简单,就是打开Run里面的Debug configuration,里面的arguments里输入你想要输入的参数,然后保存,出来点击运行按钮,OK
结果出来了,显示的是刚刚输入的参数
args[0] is hello
args[1] is world
args[2] is
于是,昨天晚上想了很久的问题终于搞明白了。