当前位置: 首页 > news >正文

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

本节我们将以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 的基础语法,随着知识的累积,你也将更加游刃有余地阅读、编写程序。

相关文章:

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

本节我们将以Windows操作系统为例,编写并执行第一个Java程序。在这之前,请确保你的操作系统上已经安装了JDK 1. 编译程序 大家可能有个疑问,为什么需要编译程序呢?计算机不能直接执行我们编写的源代码吗? 这是由于计…...

网易灵犀办公企业邮箱的IMAP和POP3服务器地址

IMAP 电子邮件地址:saleyouxiang.com 帐户类型:IMAP 接收邮件服务器:imaphz.qiye.163.com 发送邮件服务器:smtphz.qiye.163.com 用户名:saleyouxiang.comPOP3 电子邮件地址:saleyouxiang.com 帐户类型&…...

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.3-2.5

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周:优化算法 (Optimization algorithms)2.3 指数加权平均数(Exponential…...

【正版系统】海外短剧系统功能介绍,前端uniapp+开源。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、海外短剧系统功能介绍 二、搭建要求 1.系统要求 总结 前言 短剧作为一种快速、紧凑的娱乐形式,正逐渐受到更多海外观众的喜爱。这种需求增长为…...

位图(c++)

文章目录 1.位图概念2.位图的实现3.应用(解决整形存在或次数问题)3.1存在问题3.2次数问题 5.搜索的方法对比: 1.位图概念 和哈希一样,都是一个表来记录某个元素的个数或者存在与否;不同的是哈希使用的计算机定义的完整…...

音源分离 | Hybrid Spectrogram and Waveform Source Separation

一、摘要 本文提出了基于Demucs架构的的时域频域的分离模型。提出的模型在2021年索尼组织的音乐分离挑战中获胜。该架构还包括其他改进,如压缩残差分支、局部注意力或奇异值正则化。 在MusDB HQ数据集上,所有源的信噪比(SDR)平均提…...

动态el-form表单以及动态禁用

当右侧下拉框选中为 长期有效,那么左侧输入框为禁用状态; <el-form-item label"证明有效期" class"is-required"><div v-for"(item,index) in form.arrayDat" :key"index" style"width: 100%;display: flex;justify-co…...

【Web后端】web后端开发简介_Servlet简介

1.web后端开发简介 Java企业级开发&#xff0c;也就是学习]avaEE(Enterprise Edition)版本,是一种结构和一套标准。在应用中开发的标准就是Servlet、jsp和JavaBean技术。jsp技术现在已基本处于淘汰状态&#xff0c;简单了解即可web后端开发&#xff0c;基于B/S模式的开发体系。…...

Taylor Francis科技期刊数据库文献去哪里获取

一、Taylor & Francis科技期刊数据库简介&#xff1a; Taylor & Francis 科技期刊数据库&#xff08;T&F ST Library&#xff09;提供超过520种经专家评审的高质量科学与技术类期刊, 其中超过85%的期刊被Web of Science收录&#xff0c;内容最早至1997年。该科技期…...

C#学习笔记12:Winform网页操作-CefSharp内嵌浏览器

今日学习使用Winform操作网页&#xff0c;先从从窗体内嵌一个浏览器开始吧&#xff1a; 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 CefSharp介绍与安装&#xff1a; 创建解决方案安装CefSharp&#xff1a; 控件放置&#xff1a; 整体代码贴出&#xff1a; 更改…...

NSSCTF | [SWPUCTF 2021 新生赛]babyrce

打开题目&#xff0c;显示了一个php脚本 我们来分析一下这个脚本是什么意思 <?php error_reporting(0); header("Content-Type:text/html;charsetutf-8"); highlight_file(__FILE__); if($_COOKIE[admin]1) {include "../next.php"; } elseecho &quo…...

环保不只是口号,绿葆自助取袋机助力1000多家医院环保行动!

2023年1月1日起&#xff0c;国家的“限塑令”范围进一步扩大&#xff0c;2023年6月20日起&#xff0c;《商务领域经营者使用、报告一次性塑料制品管理办法》开始实施。从国家到地方&#xff0c;对一次性塑料制品的污染问题治理正在越来越严格。为了响应国家环保政策并为患者提供…...

DELL服务器配置ILO(idrac)地址、修改管理员密码

服务器型号&#xff1a;DELL PowerEdge R630 1、重启服务器选择F2进入BIOS 2、重启服务器选择F2进入BIOS 3、选择“Network” 4、配置iDRAC的IP&#xff0c;掩码网关&#xff0c;DNS等信息 5、Esc返回&#xff0c;下滑选择“User Configuration” 6、配置iDRAC的用户名密码以及…...

如何打造个人IP?

打造个人IP&#xff08;Intellectual Property&#xff09;是当今社会中越来越受到关注的话题。个人IP指的是个人在某个领域内所拥有的独特的、具有商业价值的知识、技能、品牌和影响力。为什么要打造个人IP&#xff1f;如何打造个人IP&#xff1f;下面我将为您详细解答。 首先…...

【PostgreSQL支持中文的全文检索插件(zhparser)】

PostgreSQL本身是支持全文检索的&#xff0c;提供两个数据类型&#xff08;tsvector,tsquery&#xff09;&#xff0c;并且通过动态检索自然语言文档的集合&#xff0c;定位到最匹配的查询结果。其内置的默认的分词解析器采用空格进行分词&#xff0c;但是因为中文的词语之间没…...

SHAP分析交互作用的功能,如果你用的模型是xgboost

SHAP分析交互作用的功能&#xff0c;如果你用的模型是xgboost 如果在SHAP分析中使用的是xgoost模型&#xff0c;就可以使用SHAP分析内置的交互作用分析&#xff0c;为分析变量间的相互提供了另外一个观察的视角。关于SHAP交互作用分析&#xff0c;一个参考资料&#xff0c;还是…...

瑞友科技质量改进服务事业部总经理张力受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京瑞友科技股份有限公司质量改进服务事业部总经理张力先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“PMO如何对接战略成为企业IT投资成功的有效保障”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#x…...

CVE-2024-4761 Chrome 的 JavaScript 引擎 V8 中的“越界写入”缺陷

分析 CVE-2024-4761 和 POC 代码 CVE-2024-4761 描述 CVE-2024-4761 是一个在 V8 引擎中发现的越界写漏洞&#xff0c;报告日期为 2024-05-09。这个漏洞可能允许攻击者通过特制的代码执行任意代码或者造成内存破坏&#xff0c;进而导致程序崩溃或其他不安全行为。 POC 代码解…...

字符串函数(二):strlen(求长度),strstr(查找子串),strtok(分割),strerror(打印错误信息)

字符串函数 一.strlen&#xff08;求字符串长度&#xff09;1.函数使用2.模拟实现&#xff08;三种方法&#xff09; 二.strstr&#xff08;字符串查找子串&#xff09;1.函数使用2.模拟实现 三.strtok&#xff08;字符串分割&#xff09;四.strerror&#xff0c;perror&#x…...

EUCR-30S电机保护器施耐德EOCR

​EOCR主要产品有电子式电动机保护继电器&#xff0c;电子式过电流继电器&#xff0c;电子式欠电流继电器&#xff0c;电子式欠电压继电器&#xff0c;其它保护和监视装置&#xff0c;电流互感器。 电器密集型设计 ■ 二个集成组装电流互感器 ■ 欠载保护&#xff08;空转保护…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...