为什么java需要静态类_为什么Java主要方法是静态的?
小编典典
只是约定。实际上,即使名称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主要方法是静态的?相关推荐
- java静态类和非静态类_关于java:静态和非静态内部类的区别?
我正在阅读有效的Java 2 -项目22,它在标题中写道: "Favor static member classes over non-static" 但是在这一章的结尾 Impl ...
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- java基础语句_【Java基础-Java语言基础】
知识点:1.关键字 2.标识符 3.变量和常量 一.关键字 1.Java中的关键字有很多一共53个关键字有两个是保留字(java的关键字都是小写的!!) 2.Java中的保留字 (1)const 常量 ...
- java字符串数组排序_在Java中对字符串数组进行排序
允许用户使用字符串数组.他们可以向数组添加字符串,从数组中删除字符串,搜索数组中的字符串,最终他们将能够对数组进行排序.分类是搞砸我的原因.我尝试过几种不同的方法.第一种方法是将数组转换为ArrayL ...
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
- java获取长度_获取java长度
Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import ja ...
- java 包命名_【Java】包的命名规则
命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...
- java 图片效果_使用Java进行图片底片化效果处理
使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...
- java array缓存_有java数组
[JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...
最新文章
- Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享
- 新内容转入github
- ZooKeeper第三方客户端CuratorFramework简介
- 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
- bfc是什么_一次弄懂css的BFC
- 无法启动程序因为计算机中丢失礼包,Win10开机提示“计算机中丢失mfc110u.dll”的解决方法...
- 019.nexus搭建docker镜像仓库/maven仓库
- HTML:frame导航框架的实现方法
- Photoshop 2021神经滤镜Neural Filters离线安装包下载 WIN / MAC(适用于PS 2021版本22.3.X/22.4.X)
- Nginx实现静态资源服务器
- 火星坐标-84坐标-百度地图坐标相互转换
- 一种兼顾速度和效果的对比度增强算法——CONTRAST ENHANCEMENT BASED ON LAYERED DIFFERENCE REPRESENTATION
- sklearn.metrics.confusion_matrix
- CS相关经典书籍的书评
- Cadence orcad 导出网表(.asc文件)
- Android 控件右上角角标的实现方案
- 关于 GK盘,扩盘在storage和os两侧的联系
- java 删除指定文件夹 以及文件下下面的所有文件
- 当下正值网络大电影投资热潮,你该如何参与?VDAX给你支招
- Python实现王者荣耀小助手(二)
热门文章
- 波束管理 Beam Management
- 事业单位招 计算机面试实践技能操作,2019山东事业单位卫生类招聘面试实践技能概论...
- 【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
- 用Matlab模拟一个缓冲区大小为10的随机排队系统
- 基于FPGA的DES加解密系统开发(5000字详细介绍欢迎订阅)
- Lesson 4- Exchange Server 2010 Publish
- flayber正文 再谈如何学习Linux,一线Linux专家学习经验谈
- Away3D 的实体收集器Bug
- CGI、FastCGI 知识总结
- U盘的热拔插/自动挂载跟linux2.6 kernel、 udev、 hal、 dbus 、gnome-mount 、thunar的关系...