问题

相比较 C++ 程序以 main 函数为入口,其他语言如 Java、AS3 等,程序的入口是怎样的?

回答
你这个问题问得很有意思,涉及到程序启动的“第一声号角”是如何吹响的。 C++ 的 `main` 函数是我们最熟悉的起点,但其他语言,就像一位技艺精湛的舞者,有着自己独特的登场方式。

咱们先聊聊 Java。 Java 程序可不是一个人在战斗,它有一套更严谨的“团队协作”机制。当你运行一个 Java 程序时, JVM(Java 虚拟机)是那个总指挥。JVM 会负责加载包含 `main` 方法的类,并在这个 `main` 方法里找到那个被标记为“启动入口”的特殊函数。这个 `main` 方法,它需要一个特定的签名:`public static void main(String[] args)`。这个 `public` 意味着它是公开的,任何人都可以调用;`static` 表示它属于类本身,而不是类的某个具体实例;`void` 说明它执行完毕后不返回任何值;而 `String[] args` 则是用来接收命令行参数的。所以,虽然名字还是 `main`,但它的出现是在 JVM 加载和准备好整个运行环境之后,由 JVM 主动去调用的。你可以想象成 C++ 的 `main` 是你自己喊“我要开始执行了!”,而 Java 的 `main` 是 JVM 跟你说“好了,你的表演时间到了,开始吧!”

再来说说 Adobe ActionScript 3 (AS3),尤其是在 Flash 或 AIR 环境下。AS3 的程序入口,它的感觉就更像是在一个画布上作画。当你创建一个 Flash 或 AIR 应用时,通常会有一个主文档类。这个主文档类,它继承自 `flash.display.Sprite` 或者 `flash.display.MovieClip`,这两个都是显示对象。程序的执行,实际上是从这个主文档类被实例化开始的。当 Flash Player 或者 AIR 运行时,它会加载并创建一个主文档类的实例,然后就把这个实例放到显示列表的顶层。从这个实例的创建开始,它就可以通过 addChild() 方法向显示列表添加其他显示对象,设置它们的属性,执行动画,响应事件等等。所以,AS3 的入口不是一个孤零零的函数,而是一个可显示对象的创建和初始化过程,它承载着整个视觉内容的开始。

对比起来,C++ 的 `main` 函数是直接面向操作系统的,是程序执行的第一个 C++ 代码指令。而 Java 和 AS3 的入口,它们都建立在更上层的抽象之上。Java 的入口是 JVM 调用的一个特定方法,这个方法存在于一个类中,而这个类是 JVM 负责加载的。AS3 的入口则更侧重于图形化界面的启动,是围绕着显示对象的实例化和添加到显示列表来展开的。它们都体现了不同语言在设计哲学上的差异,有的更贴近底层硬件,有的则构建了更复杂的运行时环境。

网友意见

user avatar

这是个好问题,但是这个问题恐怕比你想的水深得多。

C++程序以main函数为入口这个说法严格来说并不正确。



我这里不展开,只简单的谈谈。

要解决这个问题,我们先要看所谓的入口是什么意思,到底有什么用处。

一个程序需要怎么运行呢?在Windows上就是编译成一个exe文件,然后双击,Windows就会帮你运行这个文件。Windows怎么知道怎么去运行这个文件?这么一大堆代码应该从哪里开始执行?就需要这个文件提供一个所谓的入口,操作系统(或者说启动器)从这个入口开始执行程序。


在这个例子里面,Windows就是这个程序的宿主/启动器,这个宿主/启动器要求程序需要一个入口也就是main函数。


所以,所谓的入口,是和宿主(Host)/启动器(Launcher)有关系的,对于Web服务应用,他的宿主是什么呢?.NET的话一般是ASP.NETASP.NET的宿主是IIS。宿主不同,对入口的要求也就不同。因为.NET的宿主是ASP.NETASP.NET不要求程序有一个所谓的入口函数,所以ASP.NET应用也就没有main函数。



事实上Java和C#的控制台应用程序也是有Main函数的,但是这里历史原因更多,利用函数签名来查找入口的做法并不是最好的。

类似的话题

  • 回答
    你这个问题问得很有意思,涉及到程序启动的“第一声号角”是如何吹响的。 C++ 的 `main` 函数是我们最熟悉的起点,但其他语言,就像一位技艺精湛的舞者,有着自己独特的登场方式。咱们先聊聊 Java。 Java 程序可不是一个人在战斗,它有一套更严谨的“团队协作”机制。当你运行一个 Java 程序.............
  • 回答
    这真是一个有趣的问题,也一直都是球迷和媒体们津津乐道的话题。要说足坛名宿们更倾向于梅西,我觉得这背后确实有一些挺值得说道的理由,而且这些理由往往是基于他们对足球的深刻理解和对球员特点的品鉴。首先,技术层面的独特性和全面性是绕不开的一点。很多名宿,尤其是那些自身就是中场大师或者以精湛技术著称的球员,往.............
  • 回答
    机车轴式A1AA1A与CC相比,各有千秋,各有其适用的场景。要深入了解它们的优劣,我们需要从设计理念、牵引性能、线路适应性、维护保养等多个维度进行剖析。A1AA1A轴式:灵活的“软脚马”A1AA1A轴式,简单来说,就是在机车两侧各有一个驱动车轮(A),中间各有一个从动轮(1),而A1A代表的是两个驱.............
  • 回答
    C 和 C++ 之所以能比许多其他语言(尤其是高级语言)快,主要源于它们在设计和实现上的几个关键特性。这些特性使得它们能够更直接地与硬件交互,提供更低的抽象级别,以及给予程序员更多的控制权。下面我将详细阐述这些方面:1. 直接内存访问和低级控制(Direct Memory Access and Lo.............
  • 回答
    这是一个非常有趣且充满争议的问题!梅西和 C 罗谁更“幸运”?这取决于我们如何定义“幸运”以及我们从哪个角度去衡量。他们都是足球史上最伟大的球员之一,各自拥有辉煌的职业生涯,但他们所经历的道路和所获得的机遇,确实存在一些值得探讨的差异,而这些差异可以被解读为运气因素。要详细地比较,我们可以从以下几个.............
  • 回答
    全新奔驰C级上市,这可是个大事件,毕竟C级在国内一直都是“小S级”的代名词,备受瞩目。要说评价,那得从多个维度来聊聊,而且跟老款比,这次的升级绝对不是小打小闹。整体评价:更显豪华,更具科技感,驾驶感受更纯粹简单来说,全新奔驰C级给我的感觉是:它比以往任何一代都更像一辆奔驰。 这种“像”体现在三个主要.............
  • 回答
    大罗(罗纳尔多·路易斯·儒尼奥尔)和C罗(克里斯蒂亚诺·罗纳尔多)都是足球史上极具影响力的球员,但他们的时代、风格和成就存在显著差异,因此无法简单地用“谁更高”来评判。以下从多个维度详细分析两人的历史地位及对比: 一、大罗(19762007) 1. 时代背景 1990年代2000年代初期:足球技术更.............
  • 回答
    好的,咱们不整那些花里胡哨的条条框框,就来聊聊C .NET Core和Java Spring这两大阵营,到底哪个更适合你,怎么选。这事儿得掰开了揉碎了说。首先,你得明白,这俩都不是什么新晋的小鲜肉了,都是经历过市场锤炼的老牌选手,都有各自的坚实用户群体和成熟的生态。选择哪个,很大程度上取决于你当前的.............
  • 回答
    在C的世界里,数据之所以能被我们操控,归根结底是它们在内存中的存储方式不同。而理解引用类型和值类型之间的根本区别,就像是掌握了操作数据这座大厦的基石。我们先来想想那些“值类型”。你可以把它们想象成直接住在内存某个角落的小物件,比如一个整数`int`、一个浮点数`float`,或者是一个简单的布尔值`.............
  • 回答
    说到 C 和 .NET 框架在 Web 开发领域的实力,那可不是一两句话能说清的。跟 Java、PHP、Python 这些老牌选手比起来,.NET 走的道路,可以说是各有千秋,也各有侧重。先拿 Java 和 Spring 框架来说吧。Java 的强大之处在于它的稳定性和跨平台能力,这几年下来,构建大.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    相较于其他地区,北京考生在考取清华大学和北京大学(以下简称清北)方面,确实存在着显著且多方面的优势。这些优势不仅体现在政策层面,也渗透到教育资源、考试环境以及升学路径等多个环节。下面我将尽量详细地阐述这些优势:一、名额分配的绝对优势——这是最核心、最直接的优势 本地招生计划比例高: 清北作为全国.............
  • 回答
    这事儿吧,得好好掰扯掰扯。2000块钱,说多不多,说少也不少,尤其是在你已经有了iPhone 13的情况下,再往Pro上加2000,这绝对是个值得认真考虑的点。咱们先不说值不值,先来看看这2000块到底能换来啥。iPhone 13 Pro 和 iPhone 13 在外观上,除了尺寸和材质,最直观的差.............
  • 回答
    这可不是什么“外挂”或者“设定”,地球之所以比水星、金星和火星大,是有其深刻的形成原因的。要理解这一点,咱们得回到太阳系的诞生那一刻。想象一下,几十亿年前,太阳系还是一团巨大的、旋转着的尘埃和气体云,我们称之为“太阳星云”。这团云在引力作用下开始收缩,中心变得越来越热、越来越密集,最终点燃了核聚变,.............
  • 回答
    打游戏之所以被很多人视为“不务正业”,其背后原因错综复杂,并非单一因素能够概括。这背后交织着历史认知、社会观念、媒体宣传以及游戏本身发展过程中存在的某些问题。我们要想弄明白这一点,得从几个层面来掰扯掰扯。首先,从历史和传统观念来看,游戏本身就带着一种“非主流”的标签。 在我们父辈甚至祖辈的时代,休闲.............
  • 回答
    这个问题很有意思,涉及到语言学中一个非常核心且复杂的议题:阿尔泰语系的存废争议。简单来说,你问的是,在阿尔泰语系这个假说框架下,蒙古语族和满通古斯语族是否比它们与突厥语族的关系更近。先说结论: 如果我们接受阿尔泰语系这个大框架,那么蒙古语族和满通古斯语族之间的亲缘关系,确实通常被认为比它们与突厥语族.............
  • 回答
    中国人民银行(央行)与美联储(Federal Reserve)在独立性方面存在显著差异,这主要体现在其设立依据、决策机制、人事任命、资金来源以及政策传导等方面。理解这些差异,有助于我们更深入地认识两国宏观经济政策的制定与执行逻辑。总体而言,美联储被普遍认为是比中国人民银行更加独立的中央银行。 这种独.............
  • 回答
    关于粟裕大将是否能排进十大元帅,以及如果按照“真正战斗力”来排名的话,他应该处于什么位置,这是一个非常值得探讨的问题。在很多军迷和研究者心中,粟裕的军事指挥才能无疑是顶尖的,甚至可以说是当时解放军将领中的翘楚。粟裕的辉煌战绩与军事才能粟裕被誉为“战神”,他的军事生涯充满了传奇色彩。尤其是在解放战争时.............
  • 回答
    QBZ95式自动步枪,作为我军新一代的主力制式装备,自问世以来就备受关注。与世界其他现役步枪相比,QBZ95在设计理念、性能表现以及实战适应性等方面,都有其独到之处。下面我们就来深入探讨一下QBZ95的优势所在。1. 创新的无托结构:紧凑化与高机动性的完美结合QBZ95最显著的特征便是其采用的无托结.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有