main 函数你到底知道多少
作者:烧鸡太子爷
来源:恒生LIGHT云社区
前言
前段时间看到一道面试题:“main 函数可以被重载么?”,当时就蒙圈了,怎么还会有这种面试题,现在面试官都这么变态么?虽然变态不过还是挺感兴趣的,于是就复习了一遍基础题 [此处坏笑表情]
main 介绍
我们开始学习 java 程序的时候,最先拍得一段代码肯定是 main 函数,main 函数的格式如下:
首先针对 main 方法的格式定义:
「public」 :main 方法是启动的时候由 JVM 进行加载的,public 的可访问权限是最高的,所以需要声明为 public;
「static」 :方法的调用要么是通过对象,要么是通过类,而 main 方法的话因为是由虚拟机调用的,所以无需生成对象,那么声明为 static 即可;
「main」 :至于为什么方法名称叫 main,我想应该是参考的是 C 语言的方法名吧,毕竟 java 的鼻祖原先是写 C 的;
「void」 :main 方法退出时,并没有需要有相关返回值需要返回,所以是 void;
「String[]」 :此字符串数组用来运行时接受用户输入的参数;
这时候大家发现了没有,main 方法和其他的静态方法是一样的。
main 可以被重载吗
直接上代码

运行成功,所以除了 JVM 规定的作为应用程序入口的 main 方法之外,其他的 main 方法都是比较普通的方法
main 可以被继承吗
继续上代码,定义一个 HelloMeta 继承父类 HelloWorld

显然子类还是运行了父类的 main 方法。那么我们再重写下子类的方法

还是可以运行子类中的 main 方法
main 可以被调用吗
还是上代码吧

可以看到 main 方法被 callVerification 方法调用了,不过中间因为没有退出方法,导致死循环,程序崩了
总结
除了 main 方法作为 JVM 应用程序的入口比较特殊外,其他情况下与正常的静态方法是没什么区别的。
想向技术大佬们多多取经?开发中遇到的问题何处探讨?如何获取金融科技海量资源?
恒生LIGHT云社区,由恒生电子搭建的金融科技专业社区平台,分享实用技术干货、资源数据、金融科技行业趋势,拥抱所有金融开发者。
扫描下方小程序二维码,加入我们!

版权声明: 本文为 InfoQ 作者【恒生LIGHT云社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ad0ea8dfa1680363a81b83b7】。文章转载请联系作者。
评论