Topic: 参数 "String[] args" 的问题 |
Print this page |
1.参数 "String[] args" 的问题 | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-05 22:31 public class HelloWorld{ public static void main(String[] args){ System.out.println("HelloWorld"); } } 这个程序没什么问题吧,学过java的都看得懂,但是我一直不知道main方法为什么要这样定义,比如为什么一定要这个参数"String[] args",它起什么作用,请高手详细解释一下,很多书上面都没有说明这个问题 |
2.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: wqq0712 Posted on: 2006-06-06 15:17 呵呵~那我从我这的参考书上摘抄下来给你参考参考哈~~ 由于JAVA虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public的,又因为JAVA虚拟机在执行MAIN()方法时不需要创建对象,所以该方法必须是static的,该方法接收一个string类型的数组参数,该数组中保持执行JAVA命令时传递给所运行的类的参数. |
3.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-06 19:59 那main方法为什么需要这个数组参数,我不知道它起到一个什么作用 |
4.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: Jcat Posted on: 2006-06-06 21:30 main是程序的入口(准确的说,是application程序的),有的时候希望在执行该程序时,(动态的)带入一个或多个值,而不是写死在程序里,我想这就是这个数组参数存在的意义吧. 比如,你用过命令行吗? Windows的DOS中 ping 123.0.0.1 Linux中 man ls 这里ping和man命令后面的参数就需要动态的给出. (这个隐喻不甚严谨,不过还算形象.) (上述两个命令跟Java没任何关系,不要误解了) |
5.Re:参数 "String[] args" 的问题 [Re: Jcat] | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-07 22:10 Jcat wrote: 但是为什么我们要用(String[] args)作为参数而不用别的,在程序中,我并没有发现她起到什么作用啊? |
6.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: cainiao025 Posted on: 2006-06-09 00:51 看看这个程序: class Example { public static void main(String args[]) { //直接从命令行接收参数赋予整数a,b;使a,b可以动态的被赋初值。 int a=Integer.parseInt(args[0]); int b=Integer.parseInt(args[1]); int s=a+b; System.out.println("s="+s); } } 运行结果如下: >javac Example.java >java Example 4 5 s=9 |
7.Re:参数 "String[] args" 的问题 [Re: cainiao025] | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-09 03:03 cainiao025 wrote: 看了这个例子,我更加模糊了,我从来没有在 java ****后面直接跟某个参数的,不知道那是什么意思? |
8.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: zcjl Posted on: 2006-06-09 09:23 你应该用过类似 javac HelloWorld.java这样的命令行吧? 这个语句中,javac是被执行的命令或程序,HelloWorld.java则叫做命令行参数 javac是已经编译好的,但是在运行它之前,无法确认它将被用来编译哪些文件。 有了命令行参数这个概念后,我们可以动态的把需要被编译的对象使用命令行参数的形式传递给javac程序,而main方法的String[] args参数,就是用来接收并存放这些命令行参数的,然后你可以在main方法内部通过args获取命令行参数 |
9.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: Jcat Posted on: 2006-06-09 14:57 用数组是为了可以接收多个参数; 用String数组是因为你在命令行输入的是字符串。(传入以后再把它转换为int什么的) 总之,就是约定啦,我还想问为什么main方法要叫main,而不叫base, primary, heading什么的。。。。 |
10.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-09 18:35 基本了解了,谢谢各位 |
11.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: lisliefor Posted on: 2006-06-09 20:46 花了好多时间啊! public class Print{ int daynum; int week; public void DatePrint(String daynum,String week){ this.daynum = Integer.parseInt(daynum); this.week = Integer.parseInt(week)+1; //因为周日为第一天 if(this.daynum<0||this.daynum>31||this.week<0||this.week>7){ System.out.println("daynum为输入月份的天数,week为该月第一天是星期几(周日week=0)!请输入有效数据!"); return; } else{ String a[] = {" "," "," "," "," "," "," "}; System.out.println("Sun. Mon. Tue. Wed. Thu. Fri. sta."); int day = 1,j=this.week; System.out.print(a[this.week-1]); System.out.print(day); day++; while(day<this.daynum+1){ j++; day++; if(j==1){ System.out.print(" "); System.out.print(day); } else if(j==7){ if(day<10){ System.out.print(" "); System.out.print(day+"\n"); } else{ System.out.print(" "); System.out.print(day+"\n"); } j=0; } else{ if(day<10){ System.out.print(" "); System.out.print(day); } else{ System.out.print(" "); System.out.print(day); } } } } } public static void main(String args[]){ Print pd = new Print(); //pd.DatePrint(31+"",5+""); pd.DatePrint(args[0],args[1]); } } |
12.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: lisliefor Posted on: 2006-06-09 20:48 一个小bug,因为从9 到 10 ,由一个一位数字转两位数字,10前少一个空格,导致该行10后面的数字排列不整齐,不过下面还是整齐的。 不知道符合LZ的意思不? |
13.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: lisliefor Posted on: 2006-06-09 20:50 汗~~帖子发错地方了! LZ这是你另一个帖子“如何控制输出字符的位置 ”的回复! 天啦!我在干什么?!!! |
14.Re:参数 "String[] args" 的问题 [Re: gleamyshadow] | Copy to clipboard |
Posted by: gleamyshadow Posted on: 2006-06-09 22:06 没事,我看到了哈,谢了 但是这个题是在书上讲java.util.Calendar这个类后的一个练习题,好象你的程序中没有用到这个类哦,还有,你的程序我可以通过编译,运行时要出错啊,后来我又想了一下,自己另外写了一个,运行结果就是我想要的,另外还解决了你那个bug,你看一下咯 --------------------------------------------------------------------------------- import java.util.*; class A1{ public static void main(String[] args){ GregorianCalendar gc=new GregorianCalendar(); gc.set(2006,Calendar.JUNE,1); int a=gc.get(Calendar.DAY_OF_WEEK)-1; System.out.println(" <2006年6月>"); System.out.println("日 一 二 三 四 五 六 "); for(int i=0;i<a;i++){//定位第一天的显示位置 System.out.print(" "); } System.out.print("1 "); for(int i=2;i<31;i++){ gc.set(2006,Calendar.JUNE,i); int b=gc.get(Calendar.DAY_OF_WEEK)-1; int da=gc.get(Calendar.DATE); if(da<10){//当日期是单位数时,每个日期之间输入3个空格. if(b<6){ System.out.print(da+" "); } else { System.out.println(da+" "); } } else{//当日期是双位数时,每个日期之间输入2个空格. if(b<6){ System.out.print(da+" "); } else { System.out.println(da+" "); } } } } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |