java的main函数为什么是public static void main(String[] args)
这个问题困扰我好久了,今天就一查究竟,毕竟我好奇心比较重
1. why “public”
因为java程序是通过jvm虚拟机调用的,所以main()函数要是想被调用,必须是public
2.why “static”
在java中,没有static的变量或函数,如果想被调用的话,是要先新建一个对象才可以。而main函数作为程序的入口,需要在其它函数实例化之前就启动,这也就是为什么要加一个static。main函数好比一个门,要探索其它函数要先从门进入程序。static提供了这样一个特性,无需建立对象,就可以启动。
3.why “(String[] args)”?
(1)先来说说,为什么这个字符串数组要叫“args”,其实这个是约定俗成的一种命名,不叫"args"叫其它的也是ok的,不信可以自行测试。
(2)再来看看为什么要是一个String的数组,java在运行的时候是这样的(如下),有点像命令行,a1,a2,a3就是这个String数组里的命令。
java main a1 a2 a3
下面我们在深入到jvm驱动里面看看,main()函数是怎样被启动的:
mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/String;)V");
这是jvm启动时的代码,直接去找static的,参数为String数组的main方法。
作者微信公众号:凡人机器学习
长期分享机器学习实战相关信息,感谢关注!
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
java的main函数为什么是public static void main(String[] args)相关推荐
- 【Java】错误: 在类 Test1.Test2 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)的解决方案
问题:运行Java程序的时候碰到如下问题 错误: 在类 Test1.Test2 中找不到 main 方法, 请将 main 方法定义为: public static void main(Stri ...
- 错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap
最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 J ...
- 错误: 在类 shiyan.Triangle 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)
程序运行不了 import java.util.Scanner; public class Triangle { public static void mian(String[] args) ...
- JAVA 错误: 在类 com.runoob.test.HelloWord 中找不到 main 方法, 请将 main 方法定义为: public static void main(String
解决方法: eclipse->windows->preferences->Run/Debug->Launching 将第一个改为always就可以了
- 解决eclipse报错:错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)
事件:刚才在eclipse新建了一个类,然后执行了main方法,就报错了 分析: 1.我的class内容如下: 2.于是查了一下,看了第一篇文章,尝试了一下解决了这个问题,原文链接 解决:eclips ...
- Java中的主类概念以及public static void main方法的分析
1. 首先一定要有main()函数,不然你说从哪个函数开始执行呢 2. 包含main函数的类名不需要和文件名一致 因为字节码文件名只和类名有关,执行java程序时,也只是"java 类名&q ...
- 关于public class 类名{ public static void main(String[] args)}的一些说明
Test.java /*1.在java中任何有效的代码必须写到"类体"当中,最外层必须是一个类的定义.2.public表示公开的,class表示定义一个类,Test是一个类名.类名 ...
- Java工程中的主函数public static void main(String[] args)
Java工程中的主函数 主函数简介 主函数声明中各关键词的作用 public static void String[] args 一个Java工程中可以有多个主函数 平时写java project的时 ...
- java中main方法前的public static void及其后面的(String[] args)【笔记自用】
为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...
最新文章
- xtrabackup-工作原理
- 《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式
- linux 文件读取 监控,linux 文件系统的监控
- python scipy optimize_scipy.optimize.fminbound:设置参数的界限
- openGauss 正式开源并成立开源社区
- Java泛型程序设计
- spring jdbcTemplate中获取jdbc Connection并执行操作
- iOS ijkplayer 硬解H265(hevc)4k视频问题解决
- Linux 入门必备命令
- 十大热门编程语言优缺点对比
- 实战 | 航空公司客户价值分析-LRFCM模型
- 家谱制作软件如何成谱编修流程
- 全国通用 专升本计算机基础(简答题背诵可用)
- 汇编语言 王爽第二版 总结
- apache-maven-3.8.5配置
- 认证疑难问题分析报告
- html5 link prefetch,dns预获取(dns-prefetch)link rel="dns-prefetch"优化载入速度
- 算法 图1 列出连通集
- Vue快速入门(狂神版)
- BEM实战之扒一扒淘票票页面
热门文章
- leetcode 279. 完全平方数 bfs广度优先解法 图解 动态规划解法 c代码
- 向一个有N个元素的顺序表中插入一个元素,平均要移动的次数为多少
- android 7 蓝牙版本,[Android]Android什么版本开始支持蓝牙4.2?答案:Android 7.0
- oracle 新建路径,Linux环境安装Oracle11g(三)——用户、路径创建及配置环境变量
- flex 平铺布局_CSS3 Flex布局(伸缩布局盒模型)学习
- java xsl生成word文件_导出生成xsl文件
- centos7 python3 sqlserver_Centos7.3下SQLServer安装配置方法图文教程
- go int 最大值_Dig101 - Go之灵活的slice
- php pdo bind,PHPPDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别_php技巧
- linux 指定时间加3天,Linux系统的定时任务和延时任务