繁体   English   中英

为什么所有的java代码都打包在Classes中?

[英]Why all the java code is packed in Classes?

我已经开始学习Java并在网上挑选了一些书籍和材料。 我用C ++编程了。 我不明白的是,即使main方法也包含在Java中的Class中。 为什么我们在Java中的某些类中包含所有内容? 为什么它没有独立的功能?

因为这就是语言设计者希望它成为的样子。

这是面向对象编程语言的主要概念: 一切都是一个对象,它是一个类的实例。

因为除了Java中的类(除了少量的Java原始类型,比如int,float,...)之外什么都没有,我们必须在类中定义main方法,即Java应用程序的起点。


main方法是一个普通的静态方法,其行为与任何其他静态方法一样。 仅虚拟机使用此方法(仅)启动应用程序的主线程

基本上,它的工作原理如下:

  1. 使用java MyClass启动应用程序
  2. JVM加载此类(“类加载”)
  3. JVM启动一个新线程(主线程)
  4. JVM使用签名public static void main(String[])调用该方法

就是这样(简而言之)。

Java非常重视强制执行面向对象的范例。 也就是说,如果你发现它很麻烦,有很多方法可以解决它。

首先,包含main的类可以很容易地包含许多其他方法。 此外,创建一个名为“Utility”的类或类似的东西来存储与任何特定类或对象无关的所有泛型方法并不罕见。

并且您可以在jar中有多个入口点,具体取决于包中有多少类具有main。

如果你在eclipse之类的智能IDE中工作,你最终会发现Java看似过于丰富的限制,异常和严格的结构实际上是伪装的祝福。 当语言没有语法垃圾混乱时,编译器可以更好地理解和处理代码。 它将为您提供有关未使用的变量和方法,死代码等的信息,IDE将为您提供建议的修复和代码完成(当然还有自动格式化)。 我再也没有输入import语句了,我只是将鼠标悬停在代码上并选择我想要的类。 对于严格的类型,泛型类型,转换限制等,编译器可以捕获大量代码,否则这些代码可能会在运行时导致各种疯狂的不可检测行为。 从某种意义上说,Java是最严格的语言,你键入的大部分内容都不会被编译,或者很快就会抛出一种异常。 所以,如果你问一个关于Java结构的问题,那么Java程序员通常会回答“因为这是规则”,而Python程序员正试图让他们的缩进正确(没有自动格式帮助),Ruby程序员正在编写单元测试确保他们的所有参数都是正确的类型,并且C程序员正在试图找出段错误发生的位置。 据我所知,C ++拥有Java所拥有的一切,但是有太多其他功能(包括将任何内容转换为任何内容以及非常危险的指针算法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM