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编程规范
一、时间格式为什么有大写有小写呢? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");为了区分月份和分钟,用大写M代表月份,小写m代表分钟 而大写的H代表24小时制,小写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 模块功能:查询sim卡状态、iccid、imsi、mcc、mnc sim.getIccid() 获取sim卡…...
【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…...
(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建
前言:本文主要介绍在企业使用Python搭建接口自动化测试框架,数据驱动读取excel表里的数据,和数据库方面的交互,包括关系型数据库Mysql和非关系型数据库MongDB,连接数据库,读取数据库中数据,最后…...
实现vuex数据持久化处理
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 前言: 方案一 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有什么特点,被设计做什么 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。有一下几个特点: HDFS是一个高度容错性的系统,具有高容错、高可靠性、高扩展性的特点,适合部…...
第四十九天
●兼容性测试:主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行。 •兼容测试测什么? Android碎片化严重,每一款游戏/应用在上线之前,都会做一轮覆盖一定机型量的兼容性测试。 在产品面对海量用户之前࿰…...
ArcGIS Pro简介下载安装地址
ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统(GIS)软件,由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程,使用户能够更好地利用地理信…...
MySQL 存储过程、函数、触发器、事件
目录 存储过程 创建存储过程 调用存储过程 查看存储过程 删除存储过程 进阶 变量 if条件判断 传递参数 case结构 while循环 repeat结构 loop语句 leave语句 游标/光标 存储函数 触发器 创建触发器 删除触发器 查看触发器 事件 查看事件调度器是否开启…...
【LeetCode】121. 买卖股票的最佳时机 -
这里写自定义目录标题 2023-8-9 19:25:01 121. 买卖股票的最佳时机 2023-8-9 19:25:01 我也是一次性遍历。 自己感觉是用两个指针来做的。 第一天(x 1) 的时候就已经买入了,假定某y天 比第x天 便宜 或 相等,那么我就应当是第…...
解决Vue+Element-UI 进行From表单校验时出现了英文提示问题
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 问题描述 在使用form表单时,往往会对表单字段进行校验,字段为必填项时会添加required属性,此时自定义rules规则…...
cpolar内网穿透的安装
群晖6.X安装cpolar内网穿透 文章目录 群晖6.X安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展,以及数据量的发福暴涨…...
OPENCV C++(十)gramm矫正+直方图均衡化
两者都是只对单通道使用,对多通道的话 就需要分离通道处理再合并通道 两种方法,第一个要运算次数太多了,第二个只需要查表 伽马矫正函数,这里用第二种方法,且写法有点高级 int gammaCorrection(cv::Mat srcMat, cv::…...
并发——ThreadPoolExecutor 类简单介绍
文章目录 1 ThreadPoolExecutor 类分析2 推荐使用 ThreadPoolExecutor 构造函数创建线程池 线程池实现类 ThreadPoolExecutor 是 Executor 框架最核心的类。 1 ThreadPoolExecutor 类分析 ThreadPoolExecutor 类中提供的四个构造方法。我们来看最长的那个,其余三个…...
SharePoint 审核和监控工具
审核在顺利的 SharePoint 管理中起着重要作用,尤其是在满足法规遵从性和取证要求方面。为避免数据泄露,必须了解谁来自哪个组访问了哪个文档,以及谁创建或删除了网站或网站集。 审核 SharePoint 服务器 SharePoint采用率的提高导致企业在其…...
java+springboot+mysql法律咨询网
项目介绍: 使用javassmmysql开发的法律咨询网,系统包含超级管理员,系统管理员、用户角色,功能如下: 用户:主要是前台功能使用,包括注册、登录;查看法律领域;法律法规&a…...
无涯教程-Perl - getservbyport函数
描述 此功能转换协议PROTO的服务编号PORT,在标量context中返回服务名称,并在列表context中返回名称和相关信息- ($name,$aliases,$port_number,$protocol_name) 该调用基于/etc/services文件返回这些值。 语法 以下是此函数的简单语法- getservbyport PORT, PROTO返回值 …...
iOS开发-JsonModel的学习及使用
IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候,我们需要在界面上展示或者保存起来,下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…...
jquery 遍历所有元素
要遍历所有元素,您可以使用 jQuery 的 .each() 方法。以下是使用 .each() 方法来遍历所有元素的示例代码: $(selector).each(function() {// 在这里编写处理每个元素的代码// 使用 $(this) 来访问当前迭代的元素 });在上面的代码中,您需要将…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
