05. 【Java教程】第一个 Java 程序

news2025/1/18 14:02:13

本节我们将以Windows操作系统为例,编写并执行第一个Java程序。在这之前,请确保你的操作系统上已经安装了JDK

1. 编译程序

大家可能有个疑问,为什么需要编译程序呢?计算机不能直接执行我们编写的源代码吗?

这是由于计算机只能识别由0和1组成的二进制代码。需要通过编译将源代码转换为计算机认识的二进制代码。

1.1 Java 中的编译

在 Java 中,程序不是直接被编译为可执行文件,而是被编译为字节码文件, JVM(Java虚拟机)在运行时执行字节码文件。当我们使用 javac 编译器时,Java 源代码文件被编译为字节码文件,字节码文件以扩展名 .class 的形式保存在磁盘上。当程序运行时,字节码文件将被转换为机器代码,并在内存中执行。

总的来说,Java 源代码需要被“转换”两次才能被计算机执行:

  1. Java 源代码被编译为字节码:由 javac 前端编译器完成;
  2. 字节码被编译为机器码:由 JVM 的执行引擎完成。

下图描述了一个Java程序从编写编译,再到执行的步骤:

1.2 快速执行一个程序

1.2.1 准备工作

为了确保我们人生中第一个 Java 程序能够顺利执行,请首先确认你已经完成了下面两件事情:

  1. 已经在你的电脑上成功安装 JDK
  2. 有一个文本编辑器。(如 Windows 的记事本,Unix 的 vim)。
1.2.2 编写源代码

新建一个文本,输入如下内容,将其命名为 HelloWorld.java并保存

实例演示

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

Tips

  • 文件名必须与类名同名(类名就是上面第一行代码中class后面的HelloWorld),并且扩展名为 .java,文件名和类名都区分大小写,所以请确保文件名和类名大小写保持一致;
  • 类的命名约定以大写字母开头;
  • 上述代码中的所有符号,请使用英文半角;
  • 别忽略了代码第三行结尾的分号;

下面为实操中的截图。

打开记事本,输入源代码:

点击文件 -> 保存,将文件保存到磁盘(此处保存在桌面上),注意:这里要将文件名命名为HelloWorld.java,保存类型选择所有文件,编码选择UTF-8

1.2.3 编译后执行

现在,打开你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的终端),并进入你刚刚保存 Java 源代码的目录。

Windows搜索栏中输入cmd即可打开:

使用cd命令,进入到我们刚刚保存源代码的目录(即进入到桌面目录cd Desktop),使用dir命令,查看目录下内容:

使用javac命令编译源代码:

执行编译命令后,你会发现同一目录下会生成一个HelloWorld.class文件,这个HelloWorld.class就是我们说的字节码文件。接下来就是通过 JVM 执行字节码文件了,输入下面的命令:

java HelloWorld

如果一切正常,你会看到屏幕上输出如下内容:

祝贺你!成功执行了第一个 Java 程序!

Tips

  • javac 是编译器,而 java 是虚拟机,先使用 javac 编译器编译源代码,再使用java虚拟机执行字节码文件。这就是我们上面提到的 java 源代码被转换两次到执行的过程。
  • java 命令后面的参数是类名。换句话说,我们只需要给虚拟机传递类名作为参数即可,虚拟机会自动查找对应的以.class为扩展名的文件并且执行。

2. 理解程序

我们现在对上面的 HelloWorld.java 代码进行解析:

public class HelloWorld {
		...
}

这段代码表示我们定义了一个公开类,类名为 HelloWorld,按照约定类名首字母要大写。

public 表示这个类是公开的(至于什么是公开的,我们后面再讲),class顾名思义,就是, public 和 class都是 Java 中的关键字,必须小写。 花括号{} 中间为类的定义。

下面我们来看下花括号中间的 main()方法代码:

    public static void main(String[] args) {
        ...
    }

这段代码表示我们定义了一个入口方法,注意:入口方法是 Java 程序执行的起点。

public 和 static分别表示方法是公开的、静态的,void是方法的返回类型,main后面的括号() 用来将方法的参数括起来,String[]是参数的类型,args是参数的名称。
当然,刚刚对于代码的解释略显生涩,作为初学者无需深究每一项的含义。但有一个点请务必牢记:Java 规定,某个类定义的public static void main(String[] args)是Java程序的固定入口方法。

在方法内部,有一行代码:

        System.out.println("Hello World!");

这行代码的意义就是将Hello World这一串字符打印在屏幕上。你可以尝试修改这块内容,将代码中的Hello World!,替换为其他内容,例如:

实例演示

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("我爱编程!");
    }
}

保存源代码,打开命令行,重新编译执行,屏幕上输出的内容将会被成功替换。

3. 小结

本小节我们一起完成了第一个 Java 程序的执行,在这个过程中,我们了解了编译相关的知识,知道了使用 javac命令,可以将一个.java扩展名的源代码文件编译成.class扩展名的字节码文件,使用 java 命令,可以执行字节码文件。我们也对程序的基础语法有了大致的了解。如果你对程序的理解还有困惑,也不必担心,在后面的章节中,我们将具体学习 Java 的基础语法,随着知识的累积,你也将更加游刃有余地阅读、编写程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OV SSL证书的特点

OV SSL证书,全称为Organization Validation SSL Certificate(组织验证型SSL证书),是一种中级的SSL证书类型。与仅验证域名所有权的DV(Domain Validation)证书不同,OV证书在颁发前会执行更加严格…

Jmeter接口测试之参数化

在接口测试中,某些时候一些场景会使用到参数化的场景,参数化简单的说就是同一个请求需要不同的数据,比如在性能测试中需要并发多个用户的场景,这样的目的是为了模拟真实的用户场景,需要模拟不同的账号,这里…

ZL-016D多通道小鼠主动跑轮系统主要研究动物生活节律

简单介绍: 多通道小鼠主动跑轮系统是由动物本身自发运动来推动跑轮转动。在这种构型中,笼内动物长期活动的信息,如跑轮转动方向、转数、累计总行程等,能够使用编码器进行长度计记录。此装置由转轮组件、笼体、以及转动方向速度传…

独享静态IP:跨境网络新助手

在数字化浪潮席卷全球的今天,互联网已成为人们生活中不可或缺的一部分。而在这个由数据和信息构成的虚拟世界里,IP地址作为每一个网络设备的独特标识,其重要性不言而喻。特别是独享静态IP,它不仅为用户提供了更加稳定、安全的网络…

美国加州正测试ChatGPT等生成式AI,在4大部门应用

5月11日,美联社消息,美国加州政府正在测试ChatGPT等生成式AI,应用在税收和收费管理部、交通部、公共卫生部以及卫生与公众服务部4大部门。 测试时间6个月,为其提供技术支持的一共有5家公司,分别是OpenAI、Anthropic、…

【北京迅为】《iTOP-3588开发板从零搭建ubuntu环境手册》-第2章 获取并安装Ubuntu操作系统

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

下载文件名称乱码或变成了随机码

如图 后端是有正常返回附件名称的,浏览器开发工具中也正常显示了这个数据,但是下载下来的文件名称确实一堆随机码. 其实这个问题的原因是因为跨域 查看console: Refused to get unsafe header "content-disposition" 现象,后端传递到前端的fileName不能被识别,下载…

Sass语法介绍-混合指令

08 【Sass语法介绍-混合指令】 1.前言 混合指令在 Sass 中也是一个比较常用的指令,在前面我们讲解的内容中有编写过混合指令 mixin ,本节我们将详细讲解混合指令 mixin 的语法包括定义混合指令和引用混合指令等等,混合指令同样非常好用&…

期权隐含波动率到底是什么意思?

今天期权懂带你了解期权隐含波动率到底是什么意思?期权隐含波动率解析。通俗的说,期权隐含波动率是在期权市场中买家和卖家对于,某一期权合约价格变动幅度大小的判断。 期权隐含波动率到底是什么意思? 隐含波动率是根据期权市场价…

财务分析软件怎么选?看这篇就够了

怎么才能选到一款真正能够用于财务分析的软件?且是能够又快又直观地将财务数据情况分析清楚,从不同角度灵活分析财务数据背后的关联的软件,简单来说那得选一款BI财务分析软件。具体哪款BI财务分析软件更合适?那就要从以下几个方面…

Java 程序员必备的 15 个框架集

Java 程序员方向太多,且不说移动开发、大数据、区块链、人工智能这些,大部分 Java 程序员都是 Java Web/后端开发。那作为一名 Java Web 开发程序员必须需要熟悉哪些框架呢? d8f18202405131220599753.png 1.Spring 毫无疑问,Spri…

创建存储过程

查询语句 DDL CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATE NOT NULL,phone VARCHAR(20) NOT NULL,age INT NOT NULL,sex ENUM(男, 女) NOT NULL,introduce TEXT NOT NULL,userName VARCHAR(50) NOT NULL ); DML INSERT INTO student (create…

边缘计算安全有多重要

德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义,但一般来说,它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…

[数据集][目标检测]交通灯检测数据集VOC+YOLO格式2600张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2600 标注数量(xml文件个数):2600 标注数量(txt文件个数):2600 标注…

牛客热题:二叉树的前序遍历

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:二叉树的前序遍历题目链接方法一…

彩虹聚合DNS管理系统

聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户,每个用户可分配不同的域名解析权限;支持API接口,支持获取域名…

黑马程序员鸿蒙HarmonyOS端云一体化开发【13-15】

前置知识:arkts 一套开发工具,一套语言,搞定客户端和云端两个的编写。其中application就是客户端,cloudProgram就是云端。 开发人员->全栈开发工程师,降低了开发成本,且提供了很多现成的云服务&#xf…

游泳带什么防水耳机好?甄选四大顶尖游泳耳机推荐,最值入手!

在享受游泳的同时,搭配一款优秀的防水耳机,能够让您的游泳体验更加完美。然而,市面上琳琅满目的防水耳机品牌,让人难以选择。作为一名游泳爱好者,我深知选购一款合适的防水耳机的重要性。因此,我自费购买了…

nginx反向代理使用(详细版)

1. 下载nginx,解压;(随便放在哪里) 2. 在nginx-1.26.0文件夹下创建web文件夹,继续在web文件夹下创建abcd.test.cn文件夹(文件夹的名字就叫abcd.test.cn); 3. 配置前端代理&#xff…

mysql实现隔离性——锁

锁主要解决写-写问题,mvcc用来解决读-写问题 MyISAM不使用行级锁,主要使用表锁 MyISAM存储引擎主要使用表锁(table-level locking),并不支持行级锁(row-level locking)。当MyISAM存储引擎执行…