小编典典

只是约定。实际上,即使名称main()和传入的参数也完全是约定俗成的。

当您运行java.exe(或Windows上的javaw.exe)时,实际上发生了几次Java本机接口(JNI)调用。这些调用将加载真正是JVM的DLL(是的-java.exe不是JVM)。JNI是我们在桥接虚拟机世界以及C,C ++等世界时使用的工具。反之亦然-至少(据我所知)不可能真正获得JVM在不使用JNI的情况下运行。

基本上,java.exe是一个超级简单的C应用程序,它解析命令行,在JVM中创建一个新的String数组来保存这些参数,解析出您指定为包含main()的类名,使用JNI调用来查找main()方法本身,然后调用main()方法,将新创建的字符串数组作为参数传入。这非常类似于使用Java反射时所执行的操作-它只是使用容易混淆的命名本机函数调用。

编写自己的java.exe版本(源代码随JDK分发)并让它执行完全不同的操作,这是完全合法的。实际上,这正是我们对所有基于Java的应用程序所做的事情。

我们每个Java应用程序都有自己的启动器。我们主要这样做是为了获得自己的图标和进程名称,但是在其他情况下,除了常规的main()调用以外,我们还想做些其他事情以方便处理(例如,在一种情况下, COM互操作性,我们实际上将COM句柄传递给main()而不是字符串数组)。

所以,长话短说:它是静态的原因是方便的b / c。之所以称其为“ main”,是因为它必须是某种东西,而main()是它们在C的早期(以及那时,函数名很重要)所做的事情。我想java.exe可以允许您只指定一个完全限定的主方法名称,而不是仅指定类(java com.mycompany.Foo.someSpecialMain)-但这使IDE很难自动检测“项目中的“可启动”类。

2020-02-27

为什么java需要静态类_为什么Java主要方法是静态的?相关推荐

  1. java静态类和非静态类_关于java:静态和非静态内部类的区别?

    我正在阅读有效的Java 2 -项目22,它在标题中写道: "Favor static member classes over non-static" 但是在这一章的结尾 Impl ...

  2. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  3. java基础语句_【Java基础-Java语言基础】

    知识点:1.关键字 2.标识符 3.变量和常量 一.关键字 1.Java中的关键字有很多一共53个关键字有两个是保留字(java的关键字都是小写的!!) 2.Java中的保留字 (1)const 常量 ...

  4. java字符串数组排序_在Java中对字符串数组进行排序

    允许用户使用字符串数组.他们可以向数组添加字符串,从数组中删除字符串,搜索数组中的字符串,最终他们将能够对数组进行排序.分类是搞砸我的原因.我尝试过几种不同的方法.第一种方法是将数组转换为ArrayL ...

  5. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  6. java获取长度_获取java长度

    Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import ja ...

  7. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

  8. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

  9. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

最新文章

  1. Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享
  2. 新内容转入github
  3. ZooKeeper第三方客户端CuratorFramework简介
  4. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
  5. bfc是什么_一次弄懂css的BFC
  6. 无法启动程序因为计算机中丢失礼包,Win10开机提示“计算机中丢失mfc110u.dll”的解决方法...
  7. 019.nexus搭建docker镜像仓库/maven仓库
  8. HTML:frame导航框架的实现方法
  9. Photoshop 2021神经滤镜Neural Filters离线安装包下载 WIN / MAC(适用于PS 2021版本22.3.X/22.4.X)
  10. Nginx实现静态资源服务器
  11. 火星坐标-84坐标-百度地图坐标相互转换
  12. 一种兼顾速度和效果的对比度增强算法——CONTRAST ENHANCEMENT BASED ON LAYERED DIFFERENCE REPRESENTATION
  13. sklearn.metrics.confusion_matrix
  14. CS相关经典书籍的书评
  15. Cadence orcad 导出网表(.asc文件)
  16. Android 控件右上角角标的实现方案
  17. 关于 GK盘,扩盘在storage和os两侧的联系
  18. java 删除指定文件夹 以及文件下下面的所有文件
  19. 当下正值网络大电影投资热潮,你该如何参与?VDAX给你支招
  20. Python实现王者荣耀小助手(二)

热门文章

  1. 波束管理 Beam Management
  2. 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
  3. 【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
  4. 用Matlab模拟一个缓冲区大小为10的随机排队系统
  5. 基于FPGA的DES加解密系统开发(5000字详细介绍欢迎订阅)
  6. Lesson 4- Exchange Server 2010 Publish
  7. flayber正文 再谈如何学习Linux,一线Linux专家学习经验谈
  8. Away3D 的实体收集器Bug
  9. CGI、FastCGI 知识总结
  10. U盘的热拔插/自动挂载跟linux2.6 kernel、 udev、 hal、 dbus 、gnome-mount 、thunar的关系...