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
main方法的参数的更多相关文章
- main方法中参数"String[ ] args"详解
1.在编写完一个有主方法的java文件时,需要在cmd窗口中先编译此java文件(javac xxx.java),然后再运行(java xxx) 其实在运行java xxx的时候如果后面跟着参数用空格 ...
- 如何在Eclipse中给main方法加参数
在main方法中有一个args参数,那么如何给args参数赋值呢? public class TestMain { public static void main(String[] args) { f ...
- java项目打包成可运行的jar,main方法带参数
转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...
- java程序main方法的参数String[] args
public class ArgsTest { public static void main(String[] args) { System.out.println(args.length); fo ...
- 控制台应用程序的Main方法
总结一下Main方法规则: 1.Main 方法名大小写有规范. 2.Main 方法返回类型只有 void.int两种返回类型. 3.Main 方法的参数可以是string[] args,也可以为空,只 ...
- [Java] JVM 在执行 main 方法前的行为
JVM 执行一个 Java 程序时,先从某个指定的 Java 类的 main 方法开始执行代码,同时,传一个字符串数组作为 main 方法的参数.例如在 Unix 系统上,执行下面的命令 java T ...
- 【细说Java】揭开Java的main方法神秘的面纱
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- C#程序之Main()方法
一.Main()方法的简介 1.一般情况下,一个C#可执行程序只有一个应用程序对象(也就是就程序入口),但是在某些情况,可能会有多个应用程序对象(程序入口),如单元测试中,这个时候我们就需要通过命令行 ...
- 【细说Java】揭开Java的main方法神秘的面纱(转)
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
随机推荐
- Start Developing iOS Apps Today
view types - view常见类型
- 手动脱Mole Box壳实战总结
作者:Fly2015 这个程序是吾爱破解脱壳练习第8期的加壳程序,该程序的壳是MoleBox V2.6.5壳,这些都是广告,能够直接无视了.前面的博客手动脱Mole Box V2.6.5壳实战中已经给 ...
- JAVA Eclipse的Android文件结构是怎么样的
默认res目录下面存放了界面需要的布局和图片文件,之所以图片分为hdpi,ldpi,mdpi这些,是为了不同的设备准备的(高/中/低分辨率的图片) Bin目录类似于VS的debug或者releas ...
- Openstack nova代码部分凝视一
做个一个没怎么学过python的菜鸟.看源代码是最好的学习方式了,如今就从nova入手,主要凝视一下 nova/compute/api.py 中的 create_instance函数 def _cre ...
- windows的iis做后门,隐藏访问,无日志
windows下的iis5/iis6做后门,隐藏访问,不留访问记录或者不留日志 好不容易攻下一台Windows2000/2003 IIS服务器,你一定会想,怎样才能长期占有这个“肉鸡”呢?聪明的你肯定 ...
- MySQL ERROR 1044 (42000) 解决方法
在Terminal中输入 mysql 进入到数据库命令行,然后直接: CREATE DATABASE IF NOT EXISTS yuntu; 结果出现如下错误: ERROR 1044 (42000) ...
- Flume 开发人员指南V1.5.2
介绍 概述 Apache Flume是一个用来从非常多不同的源有效地收集.聚集和移动大量的日志数据到一个中心数据仓库的分布式的,可靠的和可用的系统. Apache Flume是Apache软件基金会的 ...
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
刚刚使用3.1,发现了一些关于触摸的不同之处,对于习惯于2.x的人还是认为坑啊,简单总结一下: 使用cocostudio加进来的ui,当某个可触但不可见的时候,给他加入不论什么触摸监听事件都是依照不可 ...
- Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
前言 在前些章节 (web安全系列(一):XSS 攻击基础及原理)以及(Web安全系列(二):XSS 攻击进阶(初探 XSS Payload))中,我详细介绍了 XSS 形成的原理以及 XSS 攻击的 ...
- 深入解析Windows窗体创建和消息分发
Windows GUI採用基于事件驱动的编程模型,其实差点儿全部的界面库都是这样做的.在纯粹的Window32 SDK编程时代.人们还能够搞懂整个Windows窗口创建和消息的流通过程.可是在如今各种 ...