Java中的main方法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在一个Java应用程序中,通常程序的入口是一个main方法,它被声明为公有静态方法,参数是一个字符串数组,返回值为Void类型。这个方法有许多值得研究的地方,今天就来浅显的测试一些用例,看看main方法在不同情况下的表现。

一、main方法的第一个参数

public class TestMain{public static void main(String[] args){System.out.println(args[0]);}
}
如上这段代码,是最基本的Java类结构。在这个TestMain类中,仅仅存在一个main方法,main方法也只有一行代码:打印字符串数组参数中的第一个参数。先看下运行结果:


可以看出,在Java中,命令行传入的参数保存在main方法的参数args中。与C/C++不同的是,args中并不包含程序名称。

二、不提供参数的main方法

public class TestMain{public static void main(){System.out.println("Success!");}
}
如上代码,没有给main方法提供args参数。首先要关注的是,这样一个程序,是否能够编译通过,其次才是它的运行结果。


显然,没有字符串数组参数的main方法可以编译通过,但在执行时却抛出了NoSuchMethodError异常,提示找不到主方法。

三、私有的main方法
public class TestMain{private static void main(String[] args){System.out.println("Hello World!");}
}
这段代码中,main方法的修饰符改为了private,即私有方法。来看下编译和运行结果:


与无参的main方法一样, 私有的main方法也可以编译通过,同样在运行期抛出了NoSunchMenthodError异常。
四、非静态main方法
public class TestMain{public void main(String[] args){System.out.println("Hello World!");}
}
非静态main方法是移除了main方法前的修饰符static后的方法,首先看下编译和运行情况:


同样的, 没有static修饰的main方法也可以编译通过,在运行期抛出了main方法不是类中的static方法错误。
五、返回类型为int的main方法
public class TestMain{public static int main(String[] args){System.out.println("Hello World!");return 0;}
}
在C/C++中,main函数可以不指定返回类型,也可以指定返回类型为void或int,甚至推荐指定main函数的返回类型为int。如果在Java中指定main方法的返回类型为int,结果会是怎么样的呢?


很遗憾, 在Java中,main方法的返回类型必须为void,其它返回类型都会导致编译后的程序,在运行期抛出main方法返回类型必须为空类型的错误。
六、省略void的main方法
public class TestMain{public static main(String[] args){System.out.println("Hello World!");}
}
C/C++中main方法可以省略void,如果在Java中也省略void,结果又是怎么样的呢?


可以看出, 不提供void返回类型的main方法,在编译期就抛出了方法声明无效,需要返回类型的错误。
七、不带参数的命令行,main方法的数组参数是null还是空数组
public class TestMain{public static void main(String[] args){String result = null == args ? "NULL" : ("length of args is" + args.length);System.out.println(result);}
}
上面这个测试中,如果main方法的字符串数组参数args为null,输出NULL,否则就输出args的长度。



如上, main方法的字符串数组参数,即使在命令行运行时没有传入参数,也不会是null,它会是一个长度为0的空数组。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/treenewbee/blog/489955

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

约瑟夫环问题(C++)

问题描述 首先,说明一下这个问题是研究生期间c课的综合作业,本来有好多选择但最后还是选择了约瑟夫环问题。下面是约瑟夫环的问题描述以及设计要求: 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人&…

实战!工作中常用到哪些设计模式

前言 大家好,我是捡田螺的小男孩。平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家…

什么是bcd码数据传输通讯_传输障碍| 数据通讯

什么是bcd码数据传输通讯传输障碍 (Transmission Impairment) In the data communication system, analog and digital signals go through the transmission medium. Transmission media are not ideal. There are some imperfections in transmission mediums. So, the signa…

Spring boot项目(问答网站)之timeline的推拉两种模式

Timeline介绍 所谓timeline就是当用户打开主页看到的随着时间轴发生的一系列时间的整合,主要包含: 关注用户的最新动态热门推荐广告推荐整合等等. 推、拉模式 推模式: 当一个用户关注了或者评论了一个问题或用户,触发事件&…

Bean放入Spring容器,你知道几种方式?

作者:三尺微命 一介书生来源:blog.csdn.net/weixin_43741092/article/details/120176466我们知道平时在开发中使用Spring的时候,都是将对象交由Spring去管理,那么将一个对象加入到Spring容器中,有哪些方式呢&#xff…

KMP POJ 2752 Seek the Name, Seek the Fame

题目传送门 1 /*2 题意:求出一个串的前缀与后缀相同的字串的长度3 KMP:nex[]就有这样的性质,倒过来输出就行了4 */5 /************************************************6 * Author :Running_Time7 * Created Time :2015-8-1…

c语言 函数的参数传递示例_C ++中带有示例的nearint()函数

c语言 函数的参数传递示例C 附近的int()函数 (C nearbyint() function) nearbyint() function is a library function of cmath header, it is used to round the given value to an integral value based on the specified direction by fegetround() function. It accepts a …

Spring boot项目(问答网站)之Python学习基础篇

简介 当问答网站基本框架搭建完毕之后需要一些初始的数据来进行填充,因此选用Python爬虫的方式,从网上截取一些资料信息(当然是自己做项目使用,非商用)放入到项目网站上面。这篇主要是关于Python基础知识的学习笔记。…

Spring Boot Admin,贼好使!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序。应…

适用于各种列表操作的Python程序

Here, we are implementing a python program for various list operations, following operations are being performed in the list, 在这里,我们正在为各种列表操作实现python程序,正在列表中执行以下操作, Declaring an integer list 声…

一个障碍,就是一个超越自我的契机

一个障碍,就是一个新的已知条件,只要愿意,任何一个障碍,都会成为一个超越自我的契机。 有一天,素有森林之王之称的狮子,来到了 天神面前:"我很感谢你赐给我如此雄壮威武的体格、如此强大无…

JAVA基础之容器基础内容

Java Collections框架 Java Collections框架中包含了大量的集合接口以及这些接口的实现类和操作它们的方法,具体包含了Set(集合)、List(列表)、Map(键值对)、Queue(队列)、Stack(栈)等,其中List、Set、Queue、Stack都继承了Collection接口。…

更快的Maven构建工具mvnd和Gradle哪个性能更好?

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体验过 Gradle,那感觉只有两个字“真香…

页面访问的常见错误码解析

200 OK 一切正常301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。 302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTT…

aptitude_PHP Numbers Aptitude问题与解答

aptitudeThis section contains Aptitude Questions and Answers on PHP Numbers. 本节包含有关PHP数字的能力问题。 1) PHP supports automatic type conversion? YesNo Answer & Explanation Correct answer: 1Yes Yes, PHP supports automatic type conversion. 1)PHP…

SpringBoot + ShardingSphere 秒级分库分表!

Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件&#xf…

JAVA基础之自定义容器实现

容器 容器主要是指Collection所包含的实现类,常用的有List、Map以及Set三种结构。本文主要介绍了几种常见的集合实现类,对它们进行自定义实现。 ArrayList:有序的容器列表,顺序存储着元素,可以使用下标进行索引&…

git reset, git checkout, git revert 区别 (译)

博客原文地址: http://blog.mexiqq.com/index.php/archives/3/题记:团队中大多数成员使用 sourceTree 和 github 两款 git 工具,然而大家对于图形化工具提供的 reset,checkout,revert 功能点并不是很了解,甚至于混淆,然后凭借猜测去使用。功夫…

Redis笔记之基本数据结构 动态字符串SDS

简单动态字符串 传统上的C语言的字符串表示是以空字符结尾的字符数组(C字符串),redis自己实现一个动态字符串(SDS),两者之间的区别以及使用SDS的好处有: 结构不同。C字符串以空字符结尾的字符…

weakhashmap_Java WeakHashMap size()方法与示例

weakhashmapWeakHashMap类的size()方法 (WeakHashMap Class size() method) size() method is available in java.util package. size()方法在java.util包中可用。 size() method is used to get the number of key-value pairs that exist in this map. size()方法用于获取此映…