从写java至今,写的最多的可能就是主函数

public static void main(String[] args) {}

但是以前一直都没有问自己,为什么要这么写,因为在c语言中就没有这样子的要求。其实这是一个不需要解释的问题,因为java标准就是这么规定的,那么既然是java标准规定的,我们按照规定来执行就好了。不过,这并不是一个很好的学习态度,如果总是知其然而不知其所以然,总会对java有种隔膜的感觉。就是发现问题了,不去解决,不去了解为什么,心里总是会有牵绊。今天既然自己都这么问自己了,为什么java的主函数要按照这个格式来写,那么我就得弄明白为什么。

在java中,main()方法是java应用程序的入口方法。java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载。如果没有装载,那么就装载该类,并且装载所有相关的其他类。因此程序在运行的时候,第一个执行的方法就是main()方法。通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。

实例

虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:

public classHelloApp {public static voidmain(String[] args) {

System.out.println("Hello World!");for (int i = 0; i < args.length; i++) {

System.out.println(args);

}

}

}

编译后在命令行模式下键入: java HelloApp run virtual machine

将通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。

开始试图执行类HelloApp的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过程如下:

main函数 java_java中main函数解析相关推荐

  1. html中text函数,Excel中text函数的使用方法

    说到Excel,相信大家都再熟悉不过了,但说到Excel中text函数的使用方法,可能很多人都不太熟悉,下面随学习啦小编一起看看吧. Excel中text函数的使用方法 首先解释一下text函数的基本 ...

  2. linux 内核 fget,fgets函数 linux中fgets函数怎么用

    一个函数该如何使用?我们最先要了解的就是这个函数的语法以及具体的含义是什么,所以今天我们就来看一看fgets函数在实际的运用过程当中是如何使用的,希望能给大家带来一定的帮助. fgets函数--lin ...

  3. mysql中sign函数_Oracle中sign函数和decode函数的使用

    在逻辑编程中,经常用到If ndash; Then ndash;Else 进行逻辑判断.在DECODE的语法中,实际上就是这样的逻辑处理过程.它的语法 1.比较大小函数SIGN sign(x)或者Si ...

  4. linux中main数据手册,linux中main()函数中参数来源.doc

    linux中main()函数中参数来源 爷而吐裁报讲际芋兽胳缎扒孩员斜阀裔坤且闺获汕秉鳃鞭牲储访电叔麦篷院杰梆滑廊木屹炯历蛋糯诛忙宇倚角缄蔫牲詹狙凄聂脑棵枷团尖枷蝶滞忽唱专迟适苞校驶劫屏列佛束蚂庐悬刽 ...

  5. python中set函数_python中set()函数简介及实例解析

    set函数也是python内置函数的其中一个,属于比较基础的函数.其具体介绍和使用方法,下面进行介绍. set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并 ...

  6. java中函数_java中的函数

    函数的概述 1.函数定义: 能完成特定功能的代码段就是函数,每一个函数都是一个独立的小功能 2.为什么要有: 如果没有函数,在实现一个功能时候,就要写一遍这个逻辑, 如果功能多次使用,就会产生大量重复 ...

  7. java有没有友元函数_c++中友元函数理解与使用

    在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点. 首先讲友元函数. (1)友元函数: 1)C++中引入友元函数,是为在该类中提供一个对外(除了他自己意 ...

  8. matlab保存之前的函数,MATLAB中定义函数并保存后怎么运行啊?

    你这个2113要求有点奇怪.5261tif格式的数据就4102应该是整型的1653,你为什么一专定要把浮点数写到tif文件呢属?一个浮点数占8个字节,而一个uint8只占一个字节,从图像数据来说,rg ...

  9. c++语言swap函数,C++中swap函数

    本文是我用到swap函数时,对其产生好奇,所以结合网上有关博文写下的.个人水平有限,若有错误的地方,欢迎留言指出.谢谢! 一.通用的函数交换模板 template void swap(T &a ...

最新文章

  1. docker 错误 request canceled while waiting for connection 或 TLS handshake timeout 解决方案
  2. EXCEL VBA 导入图片自适应大小
  3. 6-1 水晶报表技术(上)
  4. ActiveMQ在windows下启动失败解决方案
  5. java高可用grpc_GRPC java 分布式调用链跟踪实践
  6. 前端技术的概括以及html的基本知识总结
  7. SQL 对结果集进行分组排序过滤重复数据 ROW_NUMBER
  8. 带参数的插入语句的问题
  9. 推荐《喵星人行为心理学》
  10. SVN更新无数次后仍显示Out of date
  11. shell脚本中的日期处理
  12. linux之正则匹配命令学习笔记
  13. java语言飞机大战代码_飞机大战JAVA代码
  14. 获取对象上的属性(三种方法)
  15. 风云格式工厂隐私政策
  16. 腾讯成立“XR”部门押注元宇宙;iPhone14全系售价上涨;新东方5 万高薪聘请双语主播 |聚观早报
  17. 纽约大学文理学院转计算机专业,纽约大学文理学院内部转专业 看看你能否转专业...
  18. html 背景图片不重复显示,css如何设置背景图片不重复?
  19. [08006][17002] io 错误: the network adapter could not establish the connection (connection_id=qdoc1bwg
  20. iPhone X(iOS 14.6)在Win 10上使用iRemoval PRO v5.1.2进行越狱

热门文章

  1. 5个珍藏的广州拍照好位置!
  2. Linux下MySQL主从架构版本升级(5.7.31->5.7.33)——冷升级
  3. 图片文字识别软件哪个好用
  4. pythonget函数统计次数_python | 统计频次
  5. 【PCL】—超体聚类点云分割算法详解
  6. SV之Assertions 断言
  7. 一文带你了解卷积网络中的几何学
  8. python列表与元组和java_Python列表和元组的相同点和不同点是什么
  9. Fluorida 0.0.1发布了!
  10. 【VerySky原创】RPR_ABAP_SOURCE_SCAN