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

Java编程规范(命名规则),Java程序的运行过程(执行流程)分析

编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用。

首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码。命名规则包括以下几点。

  • 包的名称由一个小写字母序列组成。
  • 类的名称由大写字母开头,其他字母都由小写的单词组成。
  • 类的实例的名称由一个小写字母开头,后面的单词由大写字母开头。
  • 常量的名称都大写,并且指出完整含义。
  • 参数的名称无其他具体规定。
  • 数组的命名使用“类型[] 数组名”的形式。


另外,编码格式规定如下。

  • 程序最开始编写导入包和类语句,即 import 语句。import 语句可以有多行,编写完 import 语句后空一行。
  • 定义 public 类,顶格书写。类的主体左括号“{”不换行书写,右括号“}”顶格书写。
  • 定义 public 类中的变量,缩进书写。
  • 定义方法用缩进书写,方法的左括号“{”不换行书写,右括号“}”和方法首行第一个字符对齐。方法体要再次缩进书写,最后一个变量定义和第一个方法定义之间、方法和方法之间最好空一行。


提示:在单一的语句后有“;”,在一对括号“{}“之外无“;”。方法调用名和紧跟在其后的左括号“(”无空格,该左括号和其后的标识符之间无空格。多个参数之间的逗号和前一个参数紧靠,与后一个参数空一格。

万事知其然,要知其所以然,所以本节带大家来详细了解一下 java 程序的执行过程。

Java 程序的运行必须经过编写、编译和运行 3 个步骤。

  1. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
  2. 编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。
  3. 运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。


Java 程序运行流程如图 1 所示。
 

Java程序运行流程


图 1  Java程序运行流程


字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Java 源文件由 Java 编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器来解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。

Java 解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。

Java 虚拟机(JVM)是运行 Java 程序的软件环境,Java 解释器是 Java 虚拟机的一部分。在运行 Java 程序时,首先会启动 JVM,然后由它来负责解释执行 Java 的字节码程序,并且 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。

JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM 是 Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。Java 的这种运行机制可以通过图 2 来说明。
 

JVM工作方式


图 2  JVM工作方式


Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

提示:Java 程序通过 JVM 可以实现跨平台特性,但 JVM 是不跨平台的。也就是说,不同操作系统之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。

相关文章:

Java编程规范(命名规则),Java程序的运行过程(执行流程)分析

编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用。 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码。命名规则包括以下几点。 包的名称由一个小写字母序列组成。类的名称由大…...

layui框架实战案例(21):layui table单元格显示图片导致复选框冗余的解决方案

图片自适应表格CSS 为防止单元格内的图片不能正常显示,需本地重写CSS。 /*layui-table图片自适应*/ .layui-table-cell {height: auto;line-height: 20px;}.layui-table-cell img {height: 50%;max-width: 50%; }列代码 , cols: [[{type: checkbox,fixed:left, w…...

指针常量和常量指针

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家来访。 指针常量和常量指针光是这名字就让人头疼了。更何况还有细节问题要理清楚。 正文 命名 其实我…...

GitLab-访问返回403 forbidden问题处理

访问gitlab时报错forbidden 一般访问量大,密码错误频率高的时候,gitlab防爆机制启动了,对IP做了封禁,导致某些IP访问的是否返回 403 forbidden 1. 查看被封的IP /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/red…...

快来get策略模式,告别编程困惑,轻松变身编程高手✨

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 一…...

UPS负载箱的工作原理是什么?

UPS负载箱(Uninterruptible Power Supply Load Bank)内部包含一组电阻器,通过调节电阻值来模拟不同负载条件。当UPS供电时,电阻器会吸收一定的电能,从而模拟实际负载对UPS的需求。UPS负载箱配备了控制系统,…...

深度学习八股文: 模型训练全过程及各阶段的原因

深度学习模型的训练全过程通常包括以下步骤: 数据准备: 首先,需要准备用于训练的数据集。数据集应包含输入特征(通常是数值或图像数据)和相应的目标标签。数据通常需要被分为训练集、验证集和测试集,以便评…...

CY3-NHS ester良好的光稳定性介绍1032678-38-8

CY3-NHS ester通常表现出良好的光稳定性,这使得它在长时间的荧光成像和实验中非常有用。以下是关于CY3-NHS ester良好光稳定性的一些介绍: 1.抗光漂白性能:CY3-NHS ester通常对光漂白表现出相对高的抵抗力。这意味着在持续激发下&#xff0c…...

大厂秋招真题【贪心】美团20230826秋招T2-小美的数组重排

文章目录 【贪心】美团2023秋招-小美的数组重排题目描述与示例题目描述输入描述输出描述示例输入输出 说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 【贪心】美团2023秋招-小美的数组重排 题目描述与示例 题目描述 小美有两个长度为n…...

UnitTest框架的使用

文章目录 一、UnitTest框架是什么?二、UnitTest核心要素三、TestCase四、TestSuite & TestRunner 一、UnitTest框架是什么? UnitTest框架是python自带的一个单元测试框架,主要用它来做单元测试,它有以下特点: 能…...

软件开发项目文档系列之四如何成功撰写一份引人注目的投标文件

目录 前言1 分析招标文件1.1 投标的基础要求分析1.2 投标重点要求分析1.3 评分标准分析1.4 技术需求分析 2 撰写完整的投标文件2.1 明确文件用途2.2 提供评分指引2.3 内容完整重点突出2.4 重视图表和图示 3 认真检查和经验积累3.1 深入的准备3.2 反复检查3.3 咨询和确认3.4 积累…...

Django设置跨域

1, 安装 pip install django-cors-headers 2, 添加应用 INSTALLED_APPS (...corsheaders,... ) 3, 中间层设置 MIDDLEWARE [corsheaders.middleware.CorsMiddleware,... ] 4, 添加白名单 # CORS CORS_ORIGIN_WHITELIST (127.0.0.1:8080,localhost:8080,www.meiduo.si…...

基于Python3的Scapy构造DNS报文

一:DNS协议 DNS(Domain Name System)协议是计算机网络中的一种基础协议,它用于将域名(如www.baidu.com)转换为IP地址(如192.168.0.1),从而实现计算机之间的通信。 DNS 分…...

Jupyter Notebook修改默认浏览器方法

Jupyter Notebook修改默认浏览器方法 Create a Jupyter Notebook Config file jupyter notebook --generate-config打开配置文件.jupyter/jupyter_notebook_config.py找到c.NotebookApp.browser 改成只向自己喜欢的浏览器路径’,这里给出选择google浏览器方法&…...

云计算系统与传统计算系统的比较

随着技术的不断发展,云计算系统逐渐成为了企业和个人使用的主要计算方式之一。然而,很多人对云计算系统与传统计算系统之间的区别和相似之处还存在一些疑惑。本文将以云计算系统和传统计算系统为方向,探讨它们之间的异同点。 首先&#xff0…...

使用GoogleNet网络实现花朵分类

一.数据集准备 新建一个项目文件夹GoogleNet,并在里面建立data_set文件夹用来保存数据集,在data_set文件夹下创建新文件夹"flower_data",点击链接下载花分类数据集https://storage.googleapis.com/download.tensorflow.org/exampl…...

STM32之Bootloader、USB、IAP/DFU下载

STM32 IAP应用开发——通过内置DFU实现USB升级(方式2) STM32 IAP应用开发——通过内置DFU实现USB升级(方式1) STM32程序下载4:通过STM32CubePro-USB下载 STM32程序下载3:通过STM32CubePro-UART下载 STM…...

解决 Element-ui中 表格(Table)使用 v-if 条件控制列显隐时数据展示错乱的问题

本文 Element-ui 版本 2.x 问题 在 el-table-column 上需根据不同 v-if 条件来控制列显隐时&#xff0c;就会出现列数据展示错乱的情况&#xff08;要么 A 列的数据显示在 B 列上&#xff0c;或者后端返回有数据的但是显示的为空&#xff09;&#xff0c;如下所示。 <tem…...

Android JNI笔记

JNI、java native interface 。可以实现Java和C、C之间的调用。 在Android开发中是必须要掌握的内容。 在应用开发中&#xff0c;编写JNI代码的注册可分为动态注册和静态注册 动态注册&#xff1a; 声明好方法、注意这些签名 在JNI_OnLoad中进行注册。 static const JNINativ…...

Web开发中会话跟踪的隐藏表单字段(隐藏input)方法

隐藏表单字段是一种会话跟踪方法&#xff0c;通过在HTML表单中添加一个隐藏字段来存储会话标识符。 这样&#xff0c;每次用户提交表单时&#xff0c;会话标识符将与请求一起发送到服务器&#xff0c;以便服务器可以跟踪用户的会话状态。 以下是一个隐藏表单字段的示例&#…...

CLion与OpenSSL集成:从环境配置到MD5加密实战

1. 为什么要在CLion中集成OpenSSL 作为一个长期使用CLion进行C开发的程序员&#xff0c;我深刻体会到加密功能在现代软件开发中的重要性。无论是网络通信、数据存储还是用户认证&#xff0c;加密都是不可或缺的一环。OpenSSL作为业界广泛使用的加密工具库&#xff0c;提供了丰富…...

HTML怎么创建导出文件命名预览_HTML实时生成文件名示例【方法】

浏览器 download 属性仅支持纯字符串&#xff0c;动态文件名需用 JS 拼接后赋值给 a.download&#xff1b;注意编码、长度、路径、内存泄漏及 iOS 不支持等限制。导出文件名怎么动态拼接字符串浏览器 download 属性不支持表达式或变量&#xff0c;必须传入纯字符串。所以所谓“…...

微信读书霸榜!圈内公认必读神作,这本 OpenClaw 龙虾入门书,为何全网都在读!

2026年春天&#xff0c;如果你还没听说过“小龙虾”&#xff0c;你可能正在错过继大模型之后&#xff0c;又一次关键的技术转折。过去一个月&#xff0c;“小龙虾”在开发者社区迅速升温&#xff0c;GitHub 星标 365k 数据还在持续增长&#xff0c;讨论区活跃度显著提升&#x…...

org.openpnp.vision.pipeline.stages.DrawImageCenter

文章目录 org.openpnp.vision.pipeline.stages.DrawImageCenter功能参数例子生成测试图片 效果END org.openpnp.vision.pipeline.stages.DrawImageCenter 功能 在图像的正中心绘制一个十字标记&#xff08;两条垂直相交的线段&#xff09;&#xff0c;用于视觉调试或标定参考…...

Linux CFS 的 sleep_avg:睡眠任务的平均等待时间

一、前言&#xff1a;为什么关注睡眠任务的统计在Linux内核的进程调度子系统中&#xff0c;CFS&#xff08;Completely Fair Scheduler&#xff09;自2.6.23版本引入以来&#xff0c;一直是桌面和服务器系统的核心调度器。与早期的O(1)调度器依赖复杂的启发式算法&#xff08;如…...

如何快速掌握Figma中文界面:设计师必备的终极本地化解决方案

如何快速掌握Figma中文界面&#xff1a;设计师必备的终极本地化解决方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面头疼吗&#xff1f;每天面对"Auto L…...

答辩 PPT「躺赢」指南:Paperxie AI 生成器,30 分钟搞定毕业答辩

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、毕业季的 PPT 焦虑&#xff0c;终于有解药了 谁懂啊家人们&#xff01;毕业论文写完不是结束&#xff0c;答辩 PPT 才是…...

Windows下Labelme安装避坑指南:解决Qt插件加载失败和PyQt5版本冲突

Windows下Labelme安装全攻略&#xff1a;从环境配置到疑难解析 在计算机视觉和图像标注领域&#xff0c;Labelme以其简洁直观的界面和强大的功能成为众多开发者的首选工具。然而&#xff0c;对于Windows用户来说&#xff0c;安装过程往往伴随着各种环境配置问题&#xff0c;尤其…...

全面解析GAIA-DataSet:AIOps研究者的实战指南与数据集深度解析

全面解析GAIA-DataSet&#xff1a;AIOps研究者的实战指南与数据集深度解析 【免费下载链接】GAIA-DataSet GAIA, with the full name Generic AIOps Atlas, is an overall dataset for analyzing operation problems such as anomaly detection, log analysis, fault localizat…...

Android studio会自动下载高版本的tools

AGP Android Gradle PluginAGP 版本 最低要求的 Build-Tools 是固定死的&#xff0c;你改不了&#xff1a;AGP 8.1.0 → 最低 Build-Tools 33AGP 8.2.0 → 最低 Build-Tools 34AGP 8.3 → 最低 Build-Tools 34AGP 8.7 → 最低 Build-Tools 36当gradle/libs.versions.toml中的A…...