如何用Java编写你的第一个程序

介绍

Java是一种成熟且设计精良的编程语言,具有广泛的用途,从课堂学习到运行各种规模的商业应用。它的一个独特优势是跨平台性:一旦您创建了一个Java程序,您可以在多个操作系统上运行它,包括服务器(Linux/Unix)、桌面(Windows、macOS、Linux)和移动操作系统(Android、iOS)。

Java之所以能实现高性能,是因为它执行的是编译后经过优化的机器码。对于开发者来说,这意味着在运行之前必须先编译源代码。如果你习惯于像PHP和Python这样可以直接执行源代码的语言,那么先编译代码将是开发过程中的一个新步骤。

在本教程中,您将使用Java创建一个“Hello, World!”程序。这个“Hello, World!”程序是计算机编程中的经典传统。对于初学者来说,它是一个完整的第一个程序,也是确保您的环境配置正确的好方法。通过创建一个“Hello, World”程序,您将开始学习Java的基本语法以及Java程序的编译和执行过程。一旦完成,您将能够编写和运行基本的Java代码。

前提条件 tí

针对本教程,你将需要:

  • Java (version 11 or above) installed on your machine. For Ubuntu and Debian, follow the steps for Option 1 in our tutorial, How To Install Java with Apt on Ubuntu 22.04. For other operating systems, including Mac and Windows, see the download options for Java installation.
  • 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.(Optional) A Java Runtime Environment (JRE) that will execute the compiled code. The JRE is part of the JDK, so you don’t have to install it additionally if you have already installed the JDK. Otherwise, you can install the JRE separately. This can be useful if you intend to run your code on a remote server where you don’t want to compile code for security reasons. In this kind of server-oriented scenario, you can download and install the JRE via the native package manager. For Ubuntu and Debian, use sudo apt install openjdk-11-jre. For other distributions, use the respective package managers and search for the keyword jre and choose version 11 or above.
  • A terminal in which to execute commands. Java is well supported on all major operating systems, which means you can follow the instructions on your local computer and use a terminal to connect to a remote server. For guidance on connecting to remote servers, follow our Initial Server Setup Guide.
  • A text editor such as nano. To get started writing Java code, you can use any text editor. However, to code efficiently, consider using an integrated development environment (IDE), such as Eclipse IDE. IDEs are useful because they correct your syntax, autocomplete your code, and allow you to test the code directly, saving you the manual compilation step. However, IDEs are not always intuitive and may confuse you if you haven’t used them before. For your first Java program, it may be easier to use the text editor you are used to.

使用Java编写和执行“Hello, World!”程序

对许多人而言,他们的第一个Java程序往往也是他们最后一个Java程序。问题在于,即使是最简单的代码似乎也太复杂了,而且你必须学习许多新的东西才能完全理解它。为了避免这个常见陷阱,你将首先编写代码,运行它,然后看它是如何工作的。

开始操作,创建一个名为hello-world的新目录,用于存放本教程的代码。要创建一个项目目录并进入其中,请在终端中运行以下命令:

  1. mkdir hello-world
  2. cd hello-world

 

接下来,使用nano或你喜欢的文本编辑器创建一个名为Hello.java的文件。对于nano,使用以下命令:

  1. nano Hello.java

 

请将以下代码添加到您的文件中。这是打印“你好,世界!”消息到控制台的最基本的代码。

你好,世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

这个程序将向控制台打印消息”Hello, World!”。文件名(在这个例子中,是一个扩展名为.java的Hello)必须与源代码中的公共类名Hello相匹配。在源代码中匹配文件名和公共类名是Java的约定(这对于记住很有帮助,因为如果你找到一些有用的代码,你就会知道如何命名Java源代码文件)。

保存并关闭您的文件。使用nano命令,按下CTRL+X退出,按Y保存,按ENTER确认文件名并关闭文件。

在终端中,从与Hello.java文件位于相同的目录下运行javac命令,以便将代码编译。

  1. javac Hello.java

 

源Java代码必须使用javac编译,并包含完整的文件名。

最后,使用Java可执行文件来执行该程序,就像这样:

  1. java Hello

 

要执行已编译的代码,你需要运行java,然后是类的名称(在这个例子中是Hello)。当执行代码时,不能使用任何文件扩展名,例如.java或.class。

你的输出将会是这样的。

产出
Hello, World!

你的程序运行成功了!你创建了一个基本的Java程序,进行了编译和执行。接下来,你将会看到它是如何运作的。

理解“Hello, World!”程序

如果你习惯用Python或JavaScript编写代码,你会发现即使在一个小程序中,Java也有一些不同之处。每个Java程序至少需要两样东西:

  • A class for your code.
  • A main method inside your class.

你需要一个类,因为Java是面向对象的语言,所有的代码都必须是类的一部分。类是具有功能相关代码的集合。通常情况下,它们无法独立运行,而是作为模板来创建对象。对象是类的一个具体实例,在你的代码中可以使用。对象具有属性,并且当触发它们的方法时可以执行相应的操作。

在你的程序中,这个类叫做Hello:

你好,世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

代码的第一行表示类的开始。类总是以class开头,后面跟着它们的名称。在这种情况下,类的名称是Hello,并且与带有.java扩展名的文件的名称匹配。然后,在代码片段的末尾有一个左大括号({)和一个右大括号(}),你可以在其中放置类的代码。

这个类有一个访问修饰符(方法也有)。在这种情况下,它是公共的,意味着它是完全可访问的。

在每个文件中只使用一个类是最佳实践,这样可以使代码更易读。然而,没有类似的官方要求,可以在一个文件中拥有无限数量的类。不过,有一个限制,那就是在一个文件中只能有一个类是公共的,并且它应该具有相同的大小写敏感名称。

除了一个类之外,你的程序还有一个主方法。主方法是一个类执行的起始点,对于本教程来说,也是整个程序的起始点。它有一个非常特定的语法:public static void main(String[] args)。

你好世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

公共是访问修饰符,意味着在调用该方法时没有任何限制。

static是一个特殊的关键字,表示该方法(在这种情况下)或属性不需要显式地创建一个新对象,以便您能够调用它。它有很多用途,特别是解决了可能出现的“先有鸡还是先有蛋”的情况,其中某些代码应该能够创建程序的第一个对象,而不必作为对象的一部分。

void 是一种返回类型,意味着没有任何东西返回给调用者。在这种情况下,您将会将一条消息打印到屏幕上,并直接消耗执行结果。尽管这里的 void 不返回任何东西,但在其他情况下,方法通常返回各种信息,例如字母数字字符、整数或对象。

参数 String[] args 是 main 方法的输入。字符的字符串,或者字符串,存储字母数字信息。方括号 ([]) 表示这是一个字符串数组,而不仅是一个字符串。这个数组的名称是 args。在这种情况下,main()没有任何参数,但如果有的话,它们将包含在这个数组中。

如果你遗漏了主方法的任何属性,比如它是公共的这个事实,可能不会出现语法错误,但它可能无法按预期运行(作为起点)。

要将文本打印到控制台,可以使用 System.out.println() 方法。

你好,世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

一种方法告诉计算机执行某个动作。我们可以通过它使用括号来判断它是一个方法:()。这个方法本身是println(),它接受一个参数来指定要打印的文本。System.out在方法之前指定了该方法是核心Java(System)输出功能的一部分。

在这种情况下,您正在使用来自out子包的一种方法,该子包是父包System的一部分。为了更好地了解Java中类是如何组织的,可以想象类的层次结构类似于文件系统,其中父文件夹和相关的依赖子文件夹。在Java中,这些文件夹被称为包。相关的类根据层次结构的粒度放置在一个包或子包中。

System.out.println()的参数是一个字符串:”你好,世界!”我们知道它是一个字符串,因为字符串总是用双引号括起来的。与其他编程语言(比如PHP)不同,Java字符串不能使用单引号。

Java语法的一个特点是每个语句的末尾都需要一个分号,例如打印文本的语句:System.out.println(“你好,世界!”);。

Note

注意:如果你使用的是带有Java语法支持的集成开发环境(IDE)或文本编辑器,那么你不必担心漏写分号的问题,因为这些程序会自动处理这个问题和其他语法异常。

在这一部分,您逐行检查了程序以了解其工作原理。在下一节中,您将了解编译和运行程序时会发生什么。

编写并运行“你好,世界!”程序

在本节中,您将复习编译和运行Java程序时会发生什么。为了编译代码,您使用了JDK中的javac。

  1. javac Hello.java

 

javac会读取源代码,检查语法错误,应用优化,并生成一个名为Hello.class的字节码文件。Java的.class文件是JRE能够解释和运行的机器码。

你可以通过在项目目录下运行ls命令来查看Hello.class文件。

  1. ls

 

这个指令会列出你当前目录中的文件。

Output

Hello.class Hello.java

代码编译完成后,您可以使用JRE中的Java可执行文件运行它。

  1. java Hello

 

只有编译后的代码才能在JRE上运行,JRE无法以任何方式执行标准的人类可读文件中的代码。同样地,如果你尝试用标准文本编辑器读取编译后的.class文件,你也将无法做到。然而,借助诸如Java反编译器之类的工具,你可以读取已编译的文件,在调试没有源代码的程序时很有用。

使用这个命令,你指示JRE可执行文件java对一个名为Hello的类进行处理,该类位于Hello.class文件中。

当“Hello, World!”消息打印到控制台时,您已经确认了以下内容:

  • You have a correctly working Java environment in which you are able to compile and execute code.
  • Java has successfully located the code for the Hello class, and it is able to access it.
  • The execution flow started from the main() method. There, the method System.out.println() has been invoked with the string argument Hello, World!. The welcome message has been printed on the screen.
  • Since there is no other code, the program successfully exited.

通过调用Java,你启动了一种称为Java虚拟机(JVM)的虚拟机器。更多关于虚拟机的一般信息,请查看我们的文章《什么是虚拟机?》。

JVM在外部环境、库或整个操作系统上没有依赖,具有很好的隔离性。在不同操作系统上,JVM的行为非常相似,几乎完全一致,这使得Java具有可移植性、可预测性和安全性。这与其他语言(例如PHP)不同,PHP解释器依赖于操作系统的许多本机库。

由于Java利用自己的虚拟机来实现隔离性,因此该进程会占用大量的内存。然而,Java经过优化以有效地管理资源。即使在运行自己的虚拟机时会消耗资源,对于大型、复杂和长时间运行的程序而言,Java的性能仍然非常出色。

换句话说,在其他语言中可能有更简单或更高效的编程消息输出到屏幕的方法。但是通过使用Java,您将能够创建与多种操作系统兼容的复杂程序。

结论 (jié

恭喜!你已经编写了你的第一个Java程序。

你可以继续在Hello.java文件中玩代码,看看当你改变文本或者删除分号时会发生什么错误。只要在每次对Hello.java文件进行更改后,确保编译代码(javac Hello.java)。

想了解更多有关Java的信息,请查看我们的Java编程系列教程。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds