关于main(string[] args)引出的思考

http://zhidao.baidu.com/link?url=_toWXrvPYh8Aa93nGqi31MlwwD2ZX6X5XDAZAMzAoMkWq_2tOHV9ALwq3b8EuHY1MblUYQzH4O3YnS-tI7nFIK

问:

package test1;

public class Test {
public static void main(String[] args) {
String foo=args[1];
String bar=args[2];
String baz=args[3];
System.out.println("baz"+baz);
}
}

谁能告诉我main方法中的String[] 参数是什么?

答:
数组元素 String类型的名为 args的数组 参数为args[0] args[1] args[2] args[3]... 如果你在cmd中运行的话可以直接在文件名后面加参数 那些参数就会传到args数组里
追问
我看到一个题就是我刚上面写的这段代码,答案是4242,但是我跑了一下结果报了数组越界异常
回答
你确定这个代码和原代码是完全一样的么?
追问
我确定。不过题也有错误的可能啊!我就很郁闷,以前也没想过main方法里面的这个东西是干嘛的,反正都习惯这么用了。但是看到这个题我想了半天不知道输出结果应该是什么。 如果你觉得题哪里错了,你能帮我看看怎么改下题照着它的意思输出结果吗?或者能不能详细的给我说下main方法里面这个字符串数组是干什么用的
回答
好吧,给你简单说下这个参数是怎么回事儿吧。首先你应该也知道的main方法是整个程序的入口方法,就是说整个程序一旦开始执行的话就会首先去找main方法。那么假设这么一种情况,写一个程序,输入2个字符串,然后让它在控制台直接输出,因为我们通过String[] args 可以直接向主方法中传值,所以可以写成
class Test
{
publicstatic void main(String[] args)
{
System.out.println(args[0]+" "+args[1]");
}
}
在运行这个程序的时候,在cmd中用javac命令编译,即javac Test.java然后用java命令执行,即java Test abc efg运行结果就是abc efg。这个说明了确实是在编译后通过外界直接向main方法中传值了,很多时候我们有必要向main方法中直接传值,初学的时候很少用到这个参数,很多情况下就是完全没有在用它,但是即便是没有用到,这个参数也不能不写,因为main方法就是规定这么写的。说到这儿LZ应该明白这个东西是做什么用的了吧,那么可以稍扯远一点儿再考虑一个问题了。由于数组是一种静态线性表结构的,所以在定义的时候有5点是必须声明的,起始地址,维数,上标下界,元素个数和数组类型。在java中,如果定义一个数组,至少必须要声明数组的长度和数据类型以便确定内存大小的分配,那么String[] args这个数组的长度是多少呢
追问
你好你啊,我能加你QQ吗?希望以后的工作中能像你请教

你可能感兴趣的:(String)