0

对不起一个天真的问题。我学习 Java 编程,一开始就有一个问题。

我遵循课程:仔细观察“Hello World!” Application,您可以在其中找到以下代码。

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

有一些 C++ 编程经验对我来说这段代码看起来很奇怪。

HelloWorldApp类包含一个应用程序的起点,对我来说它看起来很奇怪,因为有很多点,例如,为了完成这项工作,我认为我们需要以某种方式调用main方法,因为它在类中,但是它的工作原理是这是。如果我有几个类(我也不确定在java应用程序中是否可以?但是,一般来说应该可以),那么我可以在应用程序中定义几个起点?

在类中定义凝视点的原因是什么?

4

9 回答 9

5

Java 不是 C++。C++ 必须保持与 C 的向后兼容性,因此尽管它是一种面向对象的语言,但它仍然具有过程语言的所有元素,包括独立的独立函数。例如,函数main(int argv, char ** arc)是任何 C(因此也是 C++)程序的入口点。

与 C++ 不同,java 从头开始​​定义为面向对象的语言。因此那里没有任何功能。它们被必须属于类的方法所取代。然而static,有些方法有时非常有用。一个例子是main()方法。实际上,在创建任何类实例之前,您需要一些程序入口点。Java编程语言设计者选择的完美解决方案是指定main()带有签名public static void main(String[] args)的特殊方法,供JVM用作程序的入口点。

于 2013-10-06T16:52:47.453 回答
4

当您启动 Java 程序时,您通常会告诉 JVM(在命令行上或通过 .jar 清单)包含main将被调用以启动程序的方法的类的名称。您可以拥有多个带有方法的类,但在程序运行时main只有一个成为“the”方法。main

请注意,许多 Java 框架(applet、J2ME、Android 等)都在内部定义了它们的起点,并且不希望您提供main方法作为入口点。

于 2013-10-06T16:48:25.730 回答
2

你是对的,main是一种方法,它必须是invoked

你需要了解的是,在

public static void main(String[] args)

方法main(Sring[] args) is public and static

记住;

  1. 公共方法可以在类、包、其他包等的任何地方访问(无处不在)
  2. 静态方法不需要对象,它们是类的一部分。

因此,当您编译程序时,JVM 会查找public static void main() method, 来启动程序。这就是它的设计方式,然后我们遵循 OOPS 概念,根据我们的用途导入类和方法。

这里的关键字是要理解的main() method is public and static,和第一件事JVM looks is a public static main method

于 2013-10-06T16:55:21.063 回答
1

在运行时,该main()方法由JVM(Java Virtual Machine). 可能有这么多类,但只有一个类包含main()方法,而从类开始的应用程序包含方法main()

于 2013-10-06T16:53:55.353 回答
0

为了完成这项工作,我认为我们需要以某种方式调用 main 方法,因为它在课堂上,但它按原样工作。

JVM :Java 虚拟机在运行程序时在提到的 java 类中查找 main 方法。所以调用 main 方法会发生,但作为程序员,你不需要这样做,jvm 会做。

如果我有几个类(我也不确定在java应用程序中是否可以?但是,一般来说应该可以),那么我可以在应用程序中定义几个起点?

通常任何应用程序都有一个起点,因此 main 方法应该存在于起点类中。其他类可以在需要时由主类使用或调用。

于 2013-10-06T16:49:25.927 回答
0

JVM (Java 虚拟机)在您的程序中查找 main 方法,并首先运行该方法。您必须告诉 JVM 它在哪个类中(IDE 会为您执行此操作)。方法签名必须始终将其定义为公共静态 void,因为它不能返回任何内容并且可以远程访问。

于 2013-10-06T16:50:47.867 回答
0

在 java 中,应用程序是任何包含方法的类public static void main(String[] args)。通常应用程序还使用库,它们是类的集合。这些类也可能包含方法main,但它们不会自动调用(但可以通过其他类的名称直接调用)。

于 2013-10-06T16:51:31.467 回答
0

问:如果我有几个类(我也不确定在 java app 中是否可以?但是,一般情况下应该可以),那么我可以在 app? 中定义几个起点。

答:绝对是的。

例如,您可以在一个调用 GUI 前端的类中使用“main()”,而在不同的类中使用“main()”来调用命令行前端;然后用一个或另一个调用你的程序。

或者你可以有一个“main()”来调用你的类上的单元测试函数。

由于只会执行一个“main()”,因此定义多个入口点的能力使您可以灵活地从完全相同的代码库创建程序的不同“版本”。

Q:所以我可以在app中定义几个起点?

答:是的 - 正是:)

您可以在启动程序时动态选择其中任何一个。

于 2013-10-06T17:00:51.657 回答
0

你在课堂上有起点的原因是因为一切都是课堂。

不知道你是否知道——Java 完全是面向对象的。因此,任何和每个文件都是对象的定义。没有函数——Java 有static方法,它们的作用是一样的。main()是一个static函数,以便 Java 工作并有一个起点。

关于多个起点——当你运行一个java程序时,你必须以某种方式选择“开始”类。当您编译并拥有您键入的单个文件时(在命令行中)

java mymainclass.class

如果您将您的程序制作成一个名为 .jar 的 java 文件存档,您可以使用

java -cp myjarprogram.jar <path to main class>

可双击的 .jar 文件有一个包含主类位置的清单文件。

于 2013-10-06T17:05:42.250 回答