作者:烧鸡太子爷前言 前段时间看到一道面试题:“main函数可以被重载么?”,当时就蒙圈了,怎么还会有这种面试题,现在面试官都这么变态么?虽然变态不过还是挺感兴趣的,于是就复习了一遍基础题 [此处坏笑表情]
来源:恒生LIGHT云社区
main介绍 我们开始学习java程序的时候,最先拍得一段代码肯定是main函数,main函数的格式如下:
public static void main(String[] args){}
首先针对 main 方法的格式定义:
「public」 :main 方法是启动的时候由 JVM 进行加载的,public 的可访问权限是最高的,所以需要声明为 public;
「static」 :方法的调用要么是通过对象,要么是通过类,而 main 方法的话因为是由虚拟机调用的,所以无需生成对象,那么声明为 static 即可;
【main函数你到底知道多少】「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云社区,由恒生电子搭建的金融科技专业社区平台,分享实用技术干货、资源数据、金融科技行业趋势,拥抱所有金融开发者。
扫描下方小程序二维码,加入我们!
文章图片
推荐阅读
- VS Code 2022路线图(大量Spring Boot优化提上日程!难道是被JB Code吓到了())
- Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到17 了吗()
- 稀疏数组与数组的关系与转化
- Synchronized的底层实现原理(看这篇就够了)
- 比postman更好用的API调试工具?apifox,永远滴神
- Dubbo拓展点加载机制
- Spring boot 2.0的Redis缓存应用
- 保姆级教程,终于搞懂脏读、幻读和不可重复读了!
- Spring Boot 2 中的默认日志管理与 Logback 配置详解