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

java编程规范

一、时间格式为什么有大写有小写呢?

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

为了区分月份和分钟,用大写M代表月份,小写m代表分钟
而大写的H代表24小时制,小写h代表12小时制

二、下面的程序判断等值的方式,使用那种最合适呢?

public class Hello {public static void main(String[] args) {String year = "2023";// 方式1System.out.println("2023".equals(year));// 方式2System.out.println(year.equals("2023"));}}

方式1是最合适的,当year为null值的时候,方式2就会报空指针异常,而方式1不会

public class Hello {public static void main(String[] args) {String year = null;// 方式1System.out.println("2023".equals(year));// 方式2System.out.println(year.equals("2023"));}}

在这里插入图片描述

三、编程相关的命名不单要求正确,还需要规范

1、命名可以使用ali / alibaba / taobao / cainiao / aliyun / youku / hangzhou 等国际通用的名称,但不应该使用niHao(你好)、youhui(优惠)等拼音,更不允许直接使用中文表示

2、规范使用驼峰命名,类名第一个字母要求大写,而方法名、变量名第一个字母要求小写,常量名要求全部大写,中间的单词用下划线分隔

3、包名统一使用小写,原则上只能是一个单词,例如一个包,com.wu.util,每个单词由点号分隔

public class Hello {private final static String HELLO_NAME = "helloName";private String helloName = "helloName";public void helloWorld(String value) {System.out.println("hello world!");}}

4、一些常见的命名规则:
1) 获取对象或属性的方法用get作前缀,如getName()
2) 设置对象或属性的方法用set作前缀,如setName()
3) 获取统计值的方法用count作前缀,如countMoney()
4) 插入的方法用save/insert作前缀,如insertStudentEntity()
5) 删除的方法用remove/delete作前缀,如deleteStudentEntity()
6) 修改的方法用update作前缀,如updateStudentEntity()
7) 判断的方法一般以is作为前缀,如isEmpty()
8) 数据对象:xxxDO,xxx即为数据表名。
9) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
10) 展示对象:xxxVO,xxx一般为网页名称。
11) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

四、使用浮点数的时候需要注意精度问题

1、在合适使用float或double的场景中,无论基本数据类型还是包装数据类型,都使用双精度浮点数即double或Double

因为float精度比较低,而且使用的时候不允许强制转换为double,使用的数字后面需要f,如1f、2f等等

2、浮点数不能直接使用 == 号或者equals()判断两个浮点数是否相等,因为浮点数采用“尾数+阶码”的编码方式来存储的,也就是说,二进制无法精确表示一个10进制的小数,因此有可能两个数理论上是相等的,但是用 == 号比较会返回false

如果要判断两个浮点数是否相等,需要确定一个精度,在这个精度内两个数相等的话则认为这两个浮点数是相等的

例如double的精度是1e-12

public class Hello {public static void main(String[] args) {Double d1 = 3.333333333333;Double d2 = 10/3.0;System.out.println(d1 == d2);System.out.println(Math.abs(d1 - d2) <= 1e-12);}}

在这里插入图片描述

3、如果对精度有更高的要求,可以选择使用BigDecimal类型,但需要注意不要使用new BigDecimal(double)的方式直接生成,这种方式存在丢失精度的风险。要使用BigDecimal.valueOf(double)的方式

import java.math.BigDecimal;public class Hello {public static void main(String[] args) {BigDecimal bigDecimal1 = new BigDecimal(3.33333333333333333);BigDecimal bigDecimal2 = BigDecimal.valueOf(3.33333333333333333);System.out.println(bigDecimal1);System.out.println(bigDecimal2);}}

在这里插入图片描述

五、禁止出现魔法值

魔法值指的就是让人无法理解含义的常量,首先看以下代码

public class Hello {public void haha(String value) {if ("0".equals(value)){// TODO} else if ("1".equals(value)) {// TODO} else {// TODO}}}

“0”和”1”就是魔法值,必须要联系上下文才能理解它的含义,在开发中应该避免这种写法,建议的写法是:

public class Hello {private final static String FEMALE = "0";private final static String MALE = "1";public void haha(String value) {if ("0".equals(value)){// TODO} else if ("1".equals(value)) {// TODO} else {// TODO}}}

这样就容易理解代码的含义了,大致的意思就是判断value的值到底是男性或者是女性

六、代码风格

1、使用的所有的运算符号如+、-、&&、==等符号,必须在两端加上一个空格
2、tap的进格应该是标准的四个空格
3、注释的双斜线与注释内容之间有且仅有一个空格
4、方法参数在定义和传入时,多个参数逗号后必须加空格。
5、if/for/while/switch/do 等保留字与括号之间都必须加空格。

public class Hello {// 注释前空一个空格public void haha(String s1, String s2, String s3){int value = 1;if (value == 1){for (int i = 0; i < 100; i++) {}} else if (value == 2) {} else {}}}

相关文章:

java编程规范

一、时间格式为什么有大写有小写呢&#xff1f; new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");为了区分月份和分钟&#xff0c;用大写M代表月份&#xff0c;小写m代表分钟 而大写的H代表24小时制&#xff0c;小写h代表12小时制 二、下面的程序判断等值的方式&…...

合宙Air724UG LuatOS-Air script lib API--sim

sim Table of Contents sim sim.getIccid() sim.getImsi() sim.getMcc() sim.getMnc() sim.getStatus() sim.setQueryNumber(flag) sim.getNumber() sim.setId(id, cbFnc) sim.getId() sim 模块功能&#xff1a;查询sim卡状态、iccid、imsi、mcc、mnc sim.getIccid() 获取sim卡…...

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…...

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

前言&#xff1a;本文主要介绍在企业使用Python搭建接口自动化测试框架&#xff0c;数据驱动读取excel表里的数据&#xff0c;和数据库方面的交互&#xff0c;包括关系型数据库Mysql和非关系型数据库MongDB&#xff0c;连接数据库&#xff0c;读取数据库中数据&#xff0c;最后…...

实现vuex数据持久化处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言&#xff1a; 方案一 localStorage 介绍 值 示例 JSON.stringify() 介绍 语法 参数 返…...

Vue-系统登录进入首页后禁用浏览器返回键

解决方法 mounted() {history.pushState(null, null, document.URL)window.addEventListener(popstate, this.goBack, false) }, destroyed() {// 清除popstate事件 否则会影响到其他页面window.removeEventListener(popstate, this.goBack, false) }, methods: {goBack() {hi…...

Hadoop理论及实践-HDFS的Namenode及Datanode(参考Hadoop官网)

HDFS有什么特点&#xff0c;被设计做什么 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。有一下几个特点&#xff1a; HDFS是一个高度容错性的系统&#xff0c;具有高容错、高可靠性、高扩展性的特点&#xff0c;适合部…...

第四十九天

●兼容性测试&#xff1a;主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行。 •兼容测试测什么&#xff1f; Android碎片化严重&#xff0c;每一款游戏/应用在上线之前&#xff0c;都会做一轮覆盖一定机型量的兼容性测试。 在产品面对海量用户之前&#xff0…...

ArcGIS Pro简介下载安装地址

ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统&#xff08;GIS&#xff09;软件&#xff0c;由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程&#xff0c;使用户能够更好地利用地理信…...

MySQL 存储过程、函数、触发器、事件

​ 目录 存储过程 创建存储过程 调用存储过程 查看存储过程 删除存储过程 进阶 变量 if条件判断 传递参数 case结构 while循环 repeat结构 loop语句 leave语句 游标/光标 存储函数 触发器 创建触发器 删除触发器 查看触发器 事件 查看事件调度器是否开启…...

【LeetCode】121. 买卖股票的最佳时机 -

这里写自定义目录标题 2023-8-9 19:25:01 121. 买卖股票的最佳时机 2023-8-9 19:25:01 我也是一次性遍历。 自己感觉是用两个指针来做的。 第一天&#xff08;x 1&#xff09; 的时候就已经买入了&#xff0c;假定某y天 比第x天 便宜 或 相等&#xff0c;那么我就应当是第…...

解决Vue+Element-UI 进行From表单校验时出现了英文提示问题

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 问题描述 在使用form表单时&#xff0c;往往会对表单字段进行校验&#xff0c;字段为必填项时会添加required属性&#xff0c;此时自定义rules规则…...

cpolar内网穿透的安装

群晖6.X安装cpolar内网穿透 文章目录 群晖6.X安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展&#xff0c;以及数据量的发福暴涨…...

OPENCV C++(十)gramm矫正+直方图均衡化

两者都是只对单通道使用&#xff0c;对多通道的话 就需要分离通道处理再合并通道 两种方法&#xff0c;第一个要运算次数太多了&#xff0c;第二个只需要查表 伽马矫正函数&#xff0c;这里用第二种方法&#xff0c;且写法有点高级 int gammaCorrection(cv::Mat srcMat, cv::…...

并发——ThreadPoolExecutor 类简单介绍

文章目录 1 ThreadPoolExecutor 类分析2 推荐使用 ThreadPoolExecutor 构造函数创建线程池 线程池实现类 ThreadPoolExecutor 是 Executor 框架最核心的类。 1 ThreadPoolExecutor 类分析 ThreadPoolExecutor 类中提供的四个构造方法。我们来看最长的那个&#xff0c;其余三个…...

SharePoint 审核和监控工具

审核在顺利的 SharePoint 管理中起着重要作用&#xff0c;尤其是在满足法规遵从性和取证要求方面。为避免数据泄露&#xff0c;必须了解谁来自哪个组访问了哪个文档&#xff0c;以及谁创建或删除了网站或网站集。 审核 SharePoint 服务器 SharePoint采用率的提高导致企业在其…...

java+springboot+mysql法律咨询网

项目介绍&#xff1a; 使用javassmmysql开发的法律咨询网&#xff0c;系统包含超级管理员&#xff0c;系统管理员、用户角色&#xff0c;功能如下&#xff1a; 用户&#xff1a;主要是前台功能使用&#xff0c;包括注册、登录&#xff1b;查看法律领域&#xff1b;法律法规&a…...

无涯教程-Perl - getservbyport函数

描述 此功能转换协议PROTO的服务编号PORT,在标量context中返回服务名称,并在列表context中返回名称和相关信息- ($name,$aliases,$port_number,$protocol_name) 该调用基于/etc/services文件返回这些值。 语法 以下是此函数的简单语法- getservbyport PORT, PROTO返回值 …...

iOS开发-JsonModel的学习及使用

IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候&#xff0c;我们需要在界面上展示或者保存起来&#xff0c;下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…...

jquery 遍历所有元素

要遍历所有元素&#xff0c;您可以使用 jQuery 的 .each() 方法。以下是使用 .each() 方法来遍历所有元素的示例代码&#xff1a; $(selector).each(function() {// 在这里编写处理每个元素的代码// 使用 $(this) 来访问当前迭代的元素 });在上面的代码中&#xff0c;您需要将…...

SenseVoice-small部署教程:CentOS7最小化安装WebUI服务详细步骤

SenseVoice-small部署教程&#xff1a;CentOS7最小化安装WebUI服务详细步骤 1. 前言&#xff1a;为什么选择SenseVoice-small&#xff1f; 如果你正在寻找一个能在普通服务器甚至树莓派上运行的语音识别工具&#xff0c;那么SenseVoice-small可能就是你的答案。这是一个轻量级…...

华为OD机试真题 新系统2026-04-08 C++实现【配置操作失败数量统计】

目录 题目 思路 Code 题目 模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1 其中:add_rule、mod_rule、 del_rule …...

仅限前500名技术决策者获取:2026奇点大会《大模型工具调用成熟度评估矩阵》(含9维打分表+自测链接)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;大模型工具调用 2026奇点智能技术大会(https://ml-summit.org) 工具调用范式的根本性演进 在2026奇点智能技术大会上&#xff0c;大模型工具调用&#xff08;Tool Use&#xff09;已从早期的提示工程驱动&#xff0c;跃迁…...

Qwen3-TTS实战:VMware环境搭建、模型部署与语音生成全解析

Qwen3-TTS实战&#xff1a;VMware环境搭建、模型部署与语音生成全解析 1. 为什么选择VMware部署Qwen3-TTS&#xff1f; 在本地部署AI模型时&#xff0c;环境隔离和资源管理常常让人头疼。VMware虚拟机提供了一种优雅的解决方案&#xff0c;特别适合像Qwen3-TTS这样的语音生成…...

用 Microsoft Agent Framework 构建 SubAgent(Multi-Agent)卤

本文能帮你解决什么&#xff1f; 1. 搞懂FastAPI异步&#xff08;async/await&#xff09;到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑&#xff08;比如阻塞操作、数据库连接池耗尽、GIL限制&#xff09;…...

手把手教你用Python玩转CALCE锂电池数据集:从数据清洗到LSTM/Transformer模型实战

手把手教你用Python玩转CALCE锂电池数据集&#xff1a;从数据清洗到LSTM/Transformer模型实战 锂电池作为新能源领域的核心组件&#xff0c;其剩余寿命预测一直是工业界和学术界的研究热点。CALCE数据集作为马里兰大学发布的权威锂电池老化数据&#xff0c;包含了多组电池在不同…...

ArcGIS插件开发实战:用Python打造你的第一个自定义工具(附完整代码)

ArcGIS插件开发实战&#xff1a;用Python打造你的第一个自定义工具&#xff08;附完整代码&#xff09; 在GIS领域&#xff0c;ArcGIS作为行业标杆软件&#xff0c;其强大的可扩展性一直备受开发者青睐。想象一下&#xff0c;当你面对重复性操作时&#xff0c;不再需要一遍遍点…...

Mysql的行级锁到底是怎么加的?醒

1. 架构背景与演进动力 1.1 从单体到碎片化&#xff1a;.NET 的开源征程 在.NET Framework 时代&#xff0c;构建系统主要围绕 Windows 操作系统紧密集成&#xff0c;采用传统的封闭式开发模式。然而&#xff0c;随着.NET Core 的推出&#xff0c;微软开启了彻底的开源与跨平台…...

基于STM32F407与W5500的HAL库TCP通信实战指南

1. 硬件准备与连接 搞嵌入式开发的朋友都知道&#xff0c;硬件连接是第一步也是最容易出错的地方。我刚开始用STM32F407和W5500时&#xff0c;就因为SPI接线问题折腾了好几天。这里分享下我的经验&#xff0c;帮你少走弯路。 首先说说W5500这个模块&#xff0c;它是一款全硬件T…...

教育部:加快普及中小学生人工智能教育政策汇总

教育部&#xff1a;加快普及中小学生人工智能教育政策汇总 基本信息 发布时间&#xff1a;2026-04-10&#xff08;最新政策&#xff09;政策文件&#xff1a;《"人工智能教育"行动计划》发文机构&#xff1a;教育部、国家发展改革委、工业和信息化部、科技部、国家…...