作者选择了免费开源基金接受捐赠作为为捐款而写程序。
Java是一种成熟且设计良好的编程语言,用途广泛,从课堂学习到运行任何规模的商业应用程序。它的独特优势之一是它是跨平台的:一旦创建了 Java 程序,就可以在许多操作系统上运行它,包括服务器(Linux/Unix)、桌面(Windows、macOS、Linux)和移动操作系统(安卓、iOS)。
Java 实现了高性能,因为它执行编译的(即机器优化的)代码。对于开发人员来说,这意味着您必须先编译其源代码才能运行它。如果你习惯了PHP、Python等可以直接执行源代码的语言,那么先编译代码将是开发过程中的一个新步骤。
在本教程中,您将创建一个“Hello, World!” Java 程序。 “你好,世界!”程序是计算机编程中经典且历史悠久的传统。对于初学者来说,这是一个完整的第一个程序,并且是确保正确配置环境的好方法。通过创建一个“Hello, World”程序,您将开始学习Java的基本语法以及Java程序的编译和执行过程。完成后,您将能够编写和运行基本的 Java 代码。
对于本教程,您将需要:
- 您的计算机上安装了 Java(版本 11 或更高版本)。对于 Ubuntu 和 Debian,请按照我们教程中选项 1 的步骤操作,如何在 Ubuntu 22.04 上使用 apt 安装 Java。对于其他操作系统,包括 Mac 和 Windows,请参阅Java 安装的下载选项.
- A compiler provided by the Java Development Kit (JDK). To compile the source code, you’ll use the default Java compiler called
javac
. You can compile your source either on your local computer or on a remote server in the cloud. For Ubuntu, you can follow the JDK installation instructions in Option 1 from How To Install Java with Apt on Ubuntu 22.04. For other platforms, see Oracle’s JDK Installation Guide or the official instructions for installing OpnJDK version 11 or above.
- (可选)将执行编译后的代码的 Java 运行时环境 (JRE)。 JRE是JDK的一部分,因此如果您已经安装了JDK,则无需额外安装。否则,您可以单独安装 JRE。如果您打算在远程服务器上运行代码,并且出于安全原因不想编译代码,那么这会很有用。在这种面向服务器的场景中,您可以通过本机包管理器下载并安装JRE。对于 Ubuntu 和 Debian,请使用
sudo apt install openjdk-11-jre
。对于其他发行版,请使用相应的包管理器并搜索关键字jre
并选择版本11或以上。
- 执行命令的终端。 Java 在所有主要操作系统上都得到了很好的支持,这意味着您可以按照本地计算机上的说明并使用终端连接到远程服务器。有关连接到远程服务器的指南,请遵循我们的初始服务器设置指南.
- 文本编辑器,例如
nano
。要开始编写 Java 代码,您可以使用任何文本编辑器。但是,为了高效编码,请考虑使用集成开发环境 (IDE),例如Eclipse集成开发环境。 IDE 很有用,因为它们可以纠正语法、自动完成代码并允许您直接测试代码,从而节省手动编译步骤。然而,IDE 并不总是直观的,如果您以前没有使用过它们,可能会让您感到困惑。对于您的第一个 Java 程序,使用您习惯的文本编辑器可能会更容易。
对于许多人来说,他们的第一个 Java 程序通常也是他们的最后一个 Java 程序。问题是,即使是最简单的代码也显得太复杂,你必须学习很多新东西才能完全理解它。为了避免这种常见的陷阱,您将首先编写代码,运行它,然后看看它是如何工作的。
To get started, create a new directory called hello-world
in which to place the code for this tutorial. To create a project directory and change into it, run the following commands in a terminal:
-
mkdir hello-world
-
cd hello-world
Next, using nano
or your favorite text editor, create a file called Hello.java
. For nano
, use the following command:
将以下代码添加到您的文件中。这是打印“Hello, World!”的最低限度代码。消息到控制台。
你好世界/Hello.java
-
public class Hello {
- public static void main(String[] args) {
- System.out.println(“你好世界!”);
- }
-
}
该程序将打印消息Hello, World!
到控制台。文件名(在本例中,Hello
与扩展名.java
) 必须与源代码中公共类的名称相匹配,即Hello
。在源代码中匹配文件名和公共类名是Java的约定。 (记住这一点很有帮助,因为如果您找到一些有用的代码,您就会知道如何命名 Java 源代码文件。)
保存并关闭您的文件。使用nano
, press CTRL+X
退出,Y
保存,并且ENTER
确认文件名并关闭文件。
在您的终端中,运行javac
来自同一目录Hello.java
找到文件以便编译代码:
Java 源代码必须使用以下命令进行编译javac
带有完整的文件名。
最后,使用以下命令执行程序java
可执行文件如下:
要执行编译后的代码,您必须运行java
后面跟着类的名称(即Hello
在此示例中)。您不能使用任何文件扩展名,例如.java
or .class
执行代码时。
你的输出将如下所示:
Output
Hello, World!
你的程序运行成功了!您创建了一个基本的 Java 程序,对其进行了编译并执行。接下来,您将看到这一切是如何运作的。
如果您习惯使用 Python 或 JavaScript 编写代码,您会发现 Java 也有一些差异,即使是在小程序中也是如此。每个 Java 程序至少需要两件事:
你需要一个类,因为 Java 是面向对象,并且所有代码都必须是类的一部分。Classes是功能相关的代码。通常,它们本身并不起作用,而是用作创建对象的模板。一个object是可以在代码中使用的类的特定实例。对象具有属性,并且能够在您触发其方法时采取行动。
在你的程序中,班级是Hello
:
你好世界/Hello.java
-
public class Hello {
- public static void main(String[] args) {
- System.out.println(“你好世界!”);
- }
-
}
The first line of the code denotes the start of a class. Classes always start with class
followed by their name. In this case, the name of the class is Hello
, and it matches the name of the file with the .java
extension. Then there is an opening curly bracket ({
) and a closing curly bracket (}
) at the end of the code snippet, inside which you put the code of the class.
该类有一个访问修饰符(方法也有)。在这种情况下,它是public
,这意味着它是完全可访问的。
最佳实践是每个文件仅使用一个类,这使得代码更易于阅读。不过,官方并没有这样的要求,并且您可以在一个文件中包含无限数量的类。不过,有一个问题——文件中只有一个类可以是公共的,并且它应该具有相同的区分大小写的名称。
In addition to a class, your program also has a main method. The main method is the starting point of execution for a class—and for this tutorial, for the whole program. It has a very specific syntax: public static void main(String[] args)
:
你好世界/Hello.java
-
public class Hello {
- public static void main(String[] args) {
- System.out.println(“你好世界!”);
- }
-
}
public
是访问修饰符,意味着调用该方法没有限制。
static
是一个特殊的关键字,表示方法(在本例中)或属性不需要显式创建新对象才能调用它。这有很多用途;特别是,它解决了可能的“先有鸡还是先有蛋”的情况,在这种情况下,在某些时候,某些代码应该能够创建程序的第一个对象,而不是对象本身的一部分。
void
是返回类型,这意味着没有任何内容返回给调用者。在这种情况下,您将在屏幕上打印一条消息,从而直接使用执行结果。虽然void
此处不返回任何内容,在其他情况下,方法通常返回各种信息,例如字母数字字符、整数或对象。
String[] args
是参数或输入main
方法。一串字符,或string,存储字母数字信息。方括号 ([]
) 表明它是一个字符串数组,而不仅仅是一个字符串。该数组的名称是args
。在这种情况下,main()
没有任何参数,但如果有的话,它们会包含在这个数组中。
如果您错过了任何主要方法属性,例如它是public
,您可能不会收到语法错误,但它不会按预期工作(作为起点)。
To print the text to the console, you use the method System.out.println()
:
你好世界/Hello.java
-
public class Hello {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
-
}
A method tells the computer to perform an action. We can tell it is a method because it uses parentheses: ()
. The method itself is println()
and accepts one argument for the text to be printed. System.out
precedes the method to specify that the method is part of the core Java (System
) functionality for output (out
).
在本例中,您使用的是子包中的方法out
,它是父包的一部分,System
。为了更好地了解 Java 中的类是如何组织的,可以想象类层次结构类似于具有父文件夹和相关依赖子文件夹的文件系统的层次结构。在 Java 中,这些文件夹称为packages。根据层次结构的粒度,相关类被放入一个包或子包中。
论点为System.out.println()
是一个字符串:"Hello, World!"
。我们知道它是一个字符串,因为字符串总是用双引号引起来。与其他语言(例如 PHP)相比,单引号不能用于 Java 字符串。
One peculiarity of Java syntax is that it requires a semicolon at the end of each statement, such as the one for printing the text: System.out.println("Hello, world!");
.
Note:如果您使用的是支持 Java 语法的 IDE 或文本编辑器,则无需担心缺少分号,因为这些程序会自动处理此问题和其他语法问题。
在本节中,您逐行检查了程序以了解其工作原理。在下一节中,您将了解编译和运行该程序时会发生什么。
在本节中,您将回顾编译和运行 Java 程序时发生的情况。为了编译代码,您使用了javac
来自JDK:
javac将读取源代码,检查语法错误,应用优化,并生成一个名为的字节代码文件Hello.class
. A Java .class文件是JRE能够解释和运行的机器代码。
您可以查看Hello.class
通过运行文件ls
来自项目目录的命令。
此命令列出当前目录中的文件:
Output
Hello.class Hello.java
代码编译完成后,您可以使用以下命令运行它java
可执行文件来自JRE:
JRE 仅运行已编译的代码,无法以任何方式执行标准人类可读文件中的代码。同样,如果您尝试读取已编译的.class
使用标准文本编辑器编辑文件,您将无法这样做。不过,在诸如Java反编译器,您可以读取已编译的文件,这在调试没有源代码的程序时非常有用。
使用此命令,您可以指示 JRE 可执行文件java
处理一个名为Hello
,这是在Hello.class
file.
当。。。的时候Hello, World!
消息打印到控制台,您已确认以下内容:
- 您有一个正确工作的 Java 环境,可以在其中编译和执行代码。
- Java已成功定位到代码
Hello
类,并且它能够访问它。
- 执行流程从
main()
方法。那里有方法System.out.println()
已使用字符串参数调用Hello, World!
。屏幕上已打印出欢迎信息。
- 由于没有其他代码,程序成功退出。
通过调用java
,您启动一种称为Java虚拟机(JVM)。看看我们的文章,什么是虚拟机?有关虚拟机的更多一般信息。
JVM 隔离良好,不依赖于外部环境、库或整个托管操作系统。 JVM 在不同操作系统上的行为即使不完全相同,也非常相似,这使得 Java 具有可移植性、可预测性和安全性。这与 PHP 等其他语言形成鲜明对比,其中 PHP 解释器依赖于操作系统中的许多本机库。
由于 Java 运行自己的虚拟机来实现这种隔离,因此该进程会消耗相当多兆字节的内存。然而,Java 已针对高效管理资源进行了优化。即使考虑到运行自己的虚拟机所涉及的资源消耗,Java 对于大型、复杂和长时间运行的程序也具有出色的性能。
换句话说,可能有更简单或更有效的方法来对以其他语言打印到屏幕上的消息进行编程。但通过使用 Java,您将能够创建与各种操作系统兼容的复杂程序。
恭喜!您已经编写了第一个 Java 程序。
您可以继续使用中的代码Hello.java
文件并查看更改文本或删除分号并收到错误时会发生什么。只需确保编译代码(javac Hello.java
) 每次您进行更改时Hello.java
file.
有关 Java 的更多信息,请查看我们的如何用 Java 编码 series.