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

2023-11-09

作者选择了免费开源基金接受捐赠作为为捐款而写程序。

介绍

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 程序,使用您习惯的文本编辑器可能会更容易。

编写并执行“Hello, World!” 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:

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

Next, using nano or your favorite text editor, create a file called Hello.java. For nano, use the following command:

  1. nano你好.java

将以下代码添加到您的文件中。这是打印“Hello, World!”的最低限度代码。消息到控制台。

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

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

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

在您的终端中,运行javac来自同一目录Hello.java找到文件以便编译代码:

  1. javac 你好.java

Java 源代码必须使用以下命令进行编译javac带有完整的文件名。

最后,使用以下命令执行程序java可执行文件如下:

  1. java Hello

要执行编译后的代码,您必须运行java后面跟着类的名称(即Hello在此示例中)。您不能使用任何文件扩展名,例如.java or .class执行代码时。

你的输出将如下所示:

Output
Hello, World!

你的程序运行成功了!您创建了一个基本的 Java 程序,对其进行了编译并执行。接下来,您将看到这一切是如何运作的。

理解“你好,世界!”程序

如果您习惯使用 Python 或 JavaScript 编写代码,您会发现 Java 也有一些差异,即使是在小程序中也是如此。每个 Java 程序至少需要两件事:

  • 您的代码的类。
  • 类中的主要方法。

你需要一个类,因为 Java 是面向对象,并且所有代码都必须是类的一部分。Classes是功能相关的代码。通常,它们本身并不起作用,而是用作创建对象的模板。一个object是可以在代码中使用的类的特定实例。对象具有属性,并且能够在您触发其方法时采取行动。

在你的程序中,班级是Hello:

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

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
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“你好世界!”);
  4. }
  5. }

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
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println("Hello, World!");
  4. }
  5. }

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 或文本编辑器,则无需担心缺少分号,因为这些程序会自动处理此问题和其他语法问题。

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

编译并运行“Hello, World!”程序

在本节中,您将回顾编译和运行 Java 程序时发生的情况。为了编译代码,您使用了javac来自JDK:

  1. javac 你好.java

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

您可以查看Hello.class通过运行文件ls来自项目目录的命令。

  1. ls

此命令列出当前目录中的文件:

Output
Hello.class Hello.java

代码编译完成后,您可以使用以下命令运行它java可执行文件来自JRE:

  1. java Hello

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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 Java 编写您的第一个程序 的相关文章

  • 如何以编程方式找出我的 PermGen 空间使用情况?

    我正在尝试诊断java lang OutOfMemoryError PermGen Space在 Sun 的 Hotspot JVM 上运行时出现错误 并且想知道我的程序在不同时刻使用了多少 PermGen 空间 有没有办法以编程方式找出这
  • 如何在java中压缩/解压tar.gz文件

    谁能告诉我在java中压缩和解压缩tar gzip文件的正确方法我一直在搜索 但我能找到的最多的是zip或gzip 单独 我写了一个包装器公共压缩 http commons apache org compress called jarchi
  • Java - 从配置文件加密/解密用户名和密码

    我们正忙于为客户开发 Java Web 服务 有两种可能的选择 将加密的用户名 密码存储在Web服务客户端上 从配置中读取 文件在客户端 解密并发送 将加密的用户名 密码存储在 Web 服务器上 从配置中读取 Web 服务器上的文件 解密并
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres
  • 空 EntityManager/EJB 注入 MDB

    我有一个消息驱动 bean MDB 部署到 WebLogic 12 1 3 我尝试使用 PersistenceContext 注释将实体管理器注入 MDB 但实体管理器为空 我还尝试注入一个简单的无状态会话 bean 它也是空的 但是 Me
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • XSLT:我们可以使用abs值吗?

    我想知道在 XSLT 中我们是否可以使用 math abs 我在某处看到过这个 但它不起作用 我有类似的东西
  • 删除 ArrayList 对象问题

    我在处理作业时遇到从 ArrayList 中删除对象的问题 如果我使用 正常 for 循环 它的工作原理如下 public void returnBook String isbn for int i 0 i lt booksBorrowed
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 编译时在代码中替换Java静态最终值?

    在java中 假设我有以下内容 fileA java class A public static final int SIZE 100 然后在另一个文件中我使用这个值 fileB java import A class b Object t

随机推荐

  • 如何在 Debian 9 上安装 Visual Studio Code

    视觉工作室代码是微软开发的免费开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 可以使用扩展来扩展 Visual Studio Code 功能 本教程介绍如何使用 VS Cod
  • 使用 PostfixAdmin 设置邮件服务器

    Postfix Admin 是一个基于 Web 的界面 允许用户配置和管理基于 Postfix 的电子邮件服务器 使用 Postfix Admin 您可以创建和管理多个虚拟域 用户和别名 这是该系列的第一篇文章设置和配置邮件服务器其中涵盖了
  • 如何在 CentOS 8 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 构建的 在本指南中 我们将讨论如何在 CentOS 8 上安装 PHP 7 2 7 3 或 7
  • 在 Debian 10 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书自颁发之日起 90 天内有效 并
  • 如何在 CentOS 7 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 可让您创建复杂的 Web 应用程序 在本教程中 我们将向您展示如何在 CentOS 7 计算机上安装 PostgreSQL 的两种不同方法
  • 如何在 Ubuntu 18.04 上安装 MariaDB

    MariaDB 是一个开源 多线程关系数据库管理系统 向后兼容 MySQL 的替代品 它由以下机构维护和开发MariaDB基金会包括MySQL的一些原始开发人员 在本教程中 我们将向您展示如何在 Ubuntu 18 04 计算机上安装 Ma
  • 在 CentOS 7 上使用 yum-cron 配置自动更新

    定期更新 CentOS 系统是整个系统安全最重要的方面之一 如果您不使用最新的安全补丁更新操作系统的软件包 您的计算机就会容易受到攻击 如果您管理多台 CentOS 机器 手动更新系统软件包可能会非常耗时 即使您管理单个 CentOS 安装
  • 在 Vim / Vi 中查找和替换

    本文介绍如何在 Vim Vi 中查找和替换文本 Vim 是最流行的命令行文本编辑器 它预装在 macOS 和大多数 Linux 发行版上 在 Vim 中查找和替换文本既快速又简单 基本查找和替换 在 Vim 中 您可以使用以下命令查找和替换
  • 安装和配置 Roundcube Webmail

    这是最后一部分设置和配置邮件服务器系列 其中我们将介绍如何安装和配置 Roundcube Webmail Roundcube 是一个基于 Web 的 IMAP 电子邮件客户端 具有用 PHP 编写的非常直观且现代的用户界面 要使用 Roun
  • Linux 中的自由命令

    我的 Linux 系统上有多少可用 RAM 内存 是否有足够的可用内存来安装和运行新应用程序 在Linux系统中 您可以使用free命令获取有关系统内存使用情况的详细报告 The free命令提供有关物理总量和swap内存 以及空闲和已用内
  • 如何在 Linux 中查找/获取您的 IP 地址

    在排除网络问题 设置新连接或配置防火墙时 了解设备的 IP 地址非常重要 IP 地址可分为两类 公共地址和私有地址 公共IP是唯一的并且可以从互联网访问的IP地址 私有 IP 地址保留供私有网络内部使用 而不直接暴露于 Internet 此
  • Python if..else 语句

    决策是计算机编程最基本的概念之一 Python 支持其他语言中常见的流程控制语句 但进行了一些修改 这if控制语句是最基本和众所周知的语句之一 用于根据特定条件执行代码 在这篇文章中 我们将回顾一下基础知识ifPython 中的语句 Pyt
  • Linux 中的 Echo 命令及示例

    The echo命令是Linux中最基本 最常用的命令之一 参数传递给echo打印到标准输出 echo常用于 shell 脚本中显示消息或输出其他命令的结果 回显命令 echo是 Bash 和大多数其他流行 shell 如 Zsh 和 Ks
  • 如何检查你的 Ubuntu 版本

    当您第一次登录 Ubuntu 系统时 在进行任何工作之前 最好检查一下计算机上运行的 Ubuntu 版本 新的 Ubuntu 版本每六个月发布一次 而 LTS 长期支持 版本每两年发布一次 LTS 版本在桌面和服务器上均受支持五年 其他标准
  • 如何在 Debian 9 上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 Docker 是容器技术事实上的标准 它是 DevOps 工程师及其持续集成和交付管道的重要工具 在本教程中 我们将指导您
  • Linux 中的定位命令

    在 Linux 上工作时最常见的操作之一是搜索文件和目录 Linux 系统上有多个命令允许您搜索文件 其中 find 和locate 是最常用的命令 The locate命令是按名称搜索文件和目录的最快 最简单的方法 在这篇文章中 我们将解
  • Linux 中的 Du 命令

    The du命令是 磁盘使用情况 的缩写 报告给定文件或目录使用的估计磁盘空间量 它对于查找占用大量磁盘空间的文件和目录非常有用 如何使用du命令 的一般语法为du命令如下 du OPTIONS FILE 如果给定FILE是一个目录 du将
  • 如何在 CentOS 7 上安装和配置 VNC

    在本教程中 我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计
  • 如何在 CentOS 7 上安装 Iptables

    从 CentOS 7 开始 防火墙D取代 iptables 成为默认的防火墙管理工具 FirewallD 是一个完整的防火墙解决方案 可以使用名为firewall cmd 的命令行实用程序进行控制 如果您更熟悉 Iptables 命令行语法
  • 如何用 Java 编写您的第一个程序

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Java是一种成熟且设计良好的编程语言 用途广泛 从课堂学习到运行任何规模的商业应用程序 它的独特优势之一是它是跨平台的 一旦创建了 Java 程序 就可以在许多操作系统上运行它 包括