main方法的参数

敲例子的时候无意中把主方法的参数给落下了,当时没有发现,保存之后就去编译,运行了,通常情况下编译没有错误那胜利就在掌握之中了,没想到这次我竟然在"不一般"的行列中,编译无误,运行出错,错误信息如下:

"找不到主方法?记得我写了main()方法了啊?回到代码处看了一下,也是static的啊?没问题啊,算了把错误信息拿出来与代码对照着看吧,发现唯一不一样的地方就是我的方法中没有参数,
立刻将参数添进去,编译,果然能运行了,回头想想,我也没传参啊,为什么还非得把它添进去啊?平时自己写的方法不都是那样吗?需要传参的时候才写参数呢?
不需要的时候就不用写啊,能起到什么作用呢?"这是当时出错之后我的思考.接下来就去查找资料了,不然不清不楚的以后还得落下,甚至以后每次写主方法的时
候都得犹豫.

哦,原来是这样啊,main()方法是Java应用程序的入口方法,也就是说main()方法是程序运行的时候第一个执行方法,这个方法体是被固定的,比
如方法名字必须是main,类型必须是public static
void的,方法必须接受一个字符串数组的参数,这个参数主要是为程序使用者在命令行状态下与程序交互提供的一种手段。

既然是固定的那我就不钻牛角尖了,写上就写上吧,反正也花不了多少时间,但是问题又来了,这个参数是从哪传来的呢?

想“既然这是程序的入口方法执行时传递的参数,那这个参数就该是cmd命令中我在运行程序的时候传来的。”
去网上验证一下自己的猜测,还真是这样的,有一个例子人家说的非常好,主要是大家经常使用,体会比较深吧,人家说使用cmd查找IP时使用的
ipconfig -all,其中all就是参数.

那么为什么这个参数非得是数组呢?什么时候需要传递多个参数呢?最简单的例子就是刚刚学习java时编写的计算器的小例子了,如下:

"45","+","55"都是参数,这时候数就需要数组啦.

总结:程序的入口方法是规定好的了,程序运行的时候最先执行的就是它,如果你不按规定进行的话,即使方法名字叫做main,编译的时候不会出现错误,运行
的时候程序就找不到入口了,因为这时候会把这个main方法当作普通的方法对待。这个问题虽小,我想多个问题积累起来力量就不可抵挡了,其实解决了这个小
问题以后心里还是宽敞了很多的,相信初学者在敲例子的时候一定想过这些问题,或者你真的没发生过意外吗?呵呵

转载自:http://blog.csdn.net/cjr15233661143/article/details/22073033

看下面的简单代码
class Test{
    public static void main(String[] args){
        if(args.length>0){
    for(int i=0;i<args.length;i++){
System.out.println(args[i]);
    }
}
    }
}

String类型的数组args主要用来接受命令行的参数, 但命令行的参数不包括 java Test 这样的字符串,如果在命令行输入 java Test red,那么就会打印出red。
当在命令行输入参数,执行的时候这个参数就会保存在args这个数组中, 我们就可以用args获取命令行的这个参数
 
 对于main方法来说,它是由java虚拟机调用的,所以是public
 调用的时候不需要产生任何对象,所以声明为static
 main方法是由java虚拟机调用,不需要产生返回值,所以返回类型为void

时间: 2024-10-29 03:37:50

main方法的参数的相关文章

Main() 方法的参数

通过以下方式之一定义方法,可以将参数发送至 Main 方法. static int Main(string[] args) static void Main(string[] args) [备注]若要在 Windows 窗体应用程序中的 Main 方法中启用命令行参数,必须手动修改 program.cs 中 Main 的签名. Windows 窗体设计器生成的代码创建没有输入参数的 Main. 也可以使 用 Environment.CommandLine 或 Environment.GetCom

main方法中参数&quot;String[ ] args&quot;详解

1.在编写完一个有主方法的java文件时,需要在cmd窗口中先编译此java文件(javac xxx.java),然后再运行(java xxx) 其实在运行java xxx的时候如果后面跟着参数用空格分开,则将这参数保存到了String类型的数组中也就是main方法 的参数String [] args中 2.方法测试 public class HelloWorld { public static void main(String[] args) { if(args.length != 2){ S

java项目打包成可运行的jar,main方法带参数

转载    侵联删!!! 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行 一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的.对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打包成 war 文件,上传至服务器,供调用.而

Eclipse如何给main方法传参数

import java.util.Arrays; /**  * 这是一个测试类,用来研究main方法的传值问题  * @author HHB  */ public class Test { /**  * 这是类的主方法,用来接受用户的输入,并将输入数据保存到一个String类型的数组里  * @param args  */ public static void main(String[] args) { System.out.println(Arrays.toString(args));//打印

如何在Eclipse中给main方法加参数

在main方法中有一个args参数,那么如何给args参数赋值呢? 1 public class TestMain { 2 3 public static void main(String[] args) { 4 for(String s:args){ 5 System.out.println(s); 6 } 7 8 } 9 10 } 一.命令行 如上图,就在java命令后面加需要的参数,参数之间用空格隔开 二.在Eclipse中 里面设置参数时参数之间以空格隔开或者一个参数一行 运行结果:

java程序main方法的参数String[] args

public class ArgsTest { public static void main(String[] args) { System.out.println(args.length); for(int i=0;i<args.length;i++) { System.out.println(args[i]); } } } javac ArgsTest.java编译程序. 执行java ArgsTest运行程序. 此外,java中也可以使用Scanner从键盘获取输入. import ja

反射main方法

利用Java反射机制去调用其他类的main方法基于这种情形: 当程序中的某个类在运行到某处需要去调用其他类的main方法时,如果此程序并不知道此main方法所属类的名称,而只是在程序中接受某一代表此main方法所属类的名称的参数,那么这时候就不能通过“类名.main(String[] args);"这样的方式来完成调用,而需要运用Java的反射机制了,需要编写相关的反射代码来完成对其他类的main方法的调用.这个方法在进行网络编程的时候,有时候我们需要接收一个类,我们只有等到接收到了才知道类的名

[Java] JVM 在执行 main 方法前的行为

JVM 执行一个 Java 程序时,先从某个指定的 Java 类的 main 方法开始执行代码,同时,传一个字符串数组作为 main 方法的参数.例如在 Unix 系统上,执行下面的命令 java Test reboot Bob Dot Endzo JVM 会调用 Test 的 main 方法,同时把四个字符串 "reboot", "Bob", "Dot" "Endzo" 作为参数传给 main 方法. 那么,在执行 main

JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践

JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识Class类 想要反射,你就必须要了解一个类--Class,我们知道,java程序中的各个java类都属于同一事物,我们通常用Classliability描述对吧,反射这个概念从JDK1.2就出来了,历史算是比较悠久了,这个Class可不是关键字哦,这个是一个类,他代表的是一类事物: 我们归根结底就