java代码规范(适合写程序之前先了解有助于开发协同)

目录

一、类定义

二、方法定义

三、接口定义

四、变量定义

1、命名规范:

2、类型规范:

3、常量规范:

五、static关键字

1、静态变量(类变量):

2、静态方法(类方法):


一、类定义

  1. 类名应该使用大写字母开头的驼峰命名法。例如,PublicClass。
  2. 类定义应该包含在一个与类名同名的文件中。例如,PublicClass类的定义应该保存在名为PublicClass.java的文件中。
  3. 类定义应该包括访问修饰符,通常是public,表示该类可以被其他类访问。如果没有指定访问修饰符,则默认为package-private(即只有在同一包中的类可以访问)。
  4. 类定义可以包含类级别的变量(称为字段)和方法。字段和方法也应该使用驼峰命名法,并且方法名应该以动词开头。
  5. 类定义可以包含构造函数,用于初始化类的实例。构造函数应该与类名同名,没有返回类型,并且可以在其中初始化类的字段。
  6. 如果类定义包含方法,则应该为每个方法提供适当的访问修饰符,例如public、private、protected或默认(package-private)。方法的访问修饰符应该根据方法的用途和访问需求进行选择。
  7. 类定义可以包含注释和文档,以便其他人可以理解代码的功能和用途。注释应该清晰明了,并且应该使用JavaDoc格式进行编写。

二、方法定义

在Java中,方法的定义也需要遵循一定的规范,这有助于提高代码的可读性和一致性。以下是一些Java方法定义的规范:

  1. 方法命名:方法名应该使用小写字母开头的驼峰命名法。动词应该用来表示方法的行为。例如,calculateSum()。
  2. 访问修饰符:每个方法都应该有明确的访问修饰符,如 public,private,protected,或者默认(没有指定)。这决定了该方法从哪里可以被访问。
  • private:当一个类的成员被声明为private时,它只能被其本身访问,而不能被外部的类访问。这是访问权限最严格的修饰符。
  • protected:当一个类的成员被声明为protected时,它可以被其本身、相同包中的其他类以及不同包中的子类访问。
  • public:当一个类的成员被声明为public时,它具有最宽松的访问权限。它可以被任何其他类访问,无论这些类是否在相同的包中或是该类的子类。

首先包层次如下所示:

private只可以在类中访问:

protected同一包中访问:

Test类和User类属于同一包下可以访问:

EasyTest类在easy包下和User类不属于同一包下所以不可以访问:

public可以被其他的类任意访问:

不同包下也可以访问:

  1. 返回类型:方法应该明确声明其返回类型。如果方法不返回任何值,那么它应该声明为 void。返回的类型应该尽可能地精确,避免使用过于宽泛的类型,如 Object。
  2. 参数:方法的参数列表应该清晰明了,每个参数的类型和名称都应该明确。参数也应该使用驼峰命名法。
  3. 异常处理:方法应该清楚地声明它可能抛出的任何异常。这有助于调用此方法的代码理解可能发生的错误并适当处理。
  4. 注释:和方法相关的重要信息应该通过注释进行说明,包括方法的目的、参数的含义和返回值。注释应该使用JavaDoc格式。
  5. 方法体:方法体内部的代码应该简洁明了,避免冗长和复杂的代码。每个方法都应该尽量只做一件事情,这样有助于代码的重用和测试。

三、接口定义

1、接口命名

  • 接口名称应具有描述性,通常以able,ible或er结尾,例如Runnable,Serializable。
  • 使用大写字母开头的驼峰命名法,例如PublicInterface。
  • 避免使用Java关键字作为接口名称。

2、接口位置

  • 接口应该放在其使用者可以访问的位置。通常,这意味着接口应该放在一个包中,该包的名称反映了其用途。

3、方法命名

  • 接口方法应该是动词或动词短语,表示一个操作,例如start(),stop()。
  • 方法也应该使用驼峰命名法,并且首字母小写,例如public void myMethod();。

4、注释

  • 对接口和其方法进行充分的注释,以便其他开发者理解它们的用途。
  • 使用JavaDoc格式进行注释,以便可以通过工具生成API文档。

5、接口与实现分离

  • 接口不应包含任何具体的实现细节。这些细节应在实现接口的类中定义。

6、避免过于庞大

  • 避免创建过于庞大的接口,接口中的方法数量应适中。过于庞大的接口会使得实现类变得复杂和难以理解。

7、常量定义

  • 如果接口需要定义常量,则这些常量应该是公共的、静态的和最终的,通常这些常量都是大写字母,用下划线分隔单词,例如:public static final String CONSTANT_NAME = "value";

8、默认方法和静态方法

  • 在合适的情况下,可以使用默认方法和静态方法。默认方法可以在不破坏已有实现的情况下向接口添加新方法,而静态方法则可以提供与接口相关的工具性函数。

接口的定义 接口类中的方法和属性不要加任何修饰符号(public 也不要加)

⭐⭐⭐在JDK8以后接口中的方法也可以实现了,就是要在方法前面加一个default关键词。

实现接口使用implements,下面的图片中的代码有这么一行

Animal myDog = new Dog();

这一行是通过new Dog对象从而向上转型实现了Animal接口因为接口是不可以直接的被new出来的。

向上转型(Upcasting)和向下转型(Downcasting)是Java中两种重要的类型转换操作

1、向上转型(Upcasting)

  • 向上转型是将子类的引用转为父类的引用。
  • 由于子类对象可以当作父类对象来使用(子类是父类的扩展),这种转换是自动的,不需要使用任何特殊的语法。
  • 向上转型是安全的,不会丢失任何数据。示例:

                class Animal { }

                class Dog extends Animal { }

                Dog dog = new Dog();

                Animal animal = dog; // 向上转型, 自动完成

2、向下转型(Downcasting)

  • 向下转型是将父类的引用转为子类的引用。
  • 由于父类引用可能指向子类对象,也可能指向真正的父类对象,所以这种转换是不安全的,需要强制转换。
  • 在转换前,通常会使用instanceof操作符来检查是否可以安全地进行向下转型。示例:

                Animal animal = new Dog(); // 向上转型

                if (animal instanceof Dog) { // 检查是否可以安全地向下转型为Dog类型

                        Dog dog = (Dog) animal; // 向下转型, 需要强制转换

                        // ...

                }

四、变量定义

1、命名规范

  • 使用有意义的变量名,变量名应清晰地表达变量的用途。
  • 采用驼峰命名法,变量名首字母小写,例如 myVariable。
  • 对于多个单词组成的变量名,使用驼峰命名法,例如 mySecondVariable。

2、类型规范

  • 使用合适的数据类型,避免不必要的数据类型转换和浪费内存。
  • 在可能的情况下,优先使用基本数据类型而不是其包装类。

3、常量规范

  • 常量通常使用 static 和 final 关键字进行定义。
  • 常量名全部大写,单词之间使用下划线分隔,例如 MY_CONSTANT。
  • 常量不应被改变,因此在定义时应初始化。

五、static关键字

1、静态变量(类变量):

  • 使用static修饰的变量称为静态变量或类变量。
  • 它属于类,而不属于类的任何一个实例。也就是说,类的所有实例共享同一个静态变量。
  • 静态变量在类加载时初始化,仅在类加载时分配内存一次。
class Counter {  
    static int count = 0; // 静态变量  
  
    Counter() {  
        count++;  
        System.out.println(count);  
    }  
  
    public static void main(String args[]) {  
        Counter c1 = new Counter();  
        Counter c2 = new Counter();  
        Counter c3 = new Counter();  
    }  
}  
// 输出  
// 1  
// 2  
// 3

2、静态方法(类方法)

  • 使用static修饰的方法称为静态方法或类方法。
  • 静态方法可以直接通过类名来调用,不需要创建类的实例。
  • 静态方法可以访问静态数据成员并且可以更改静态数据成员的值。
class Example {  
    static int cube(int x) {  // 静态方法  
        return x * x * x;  
    }  
  
    public static void main(String args[]) {  
        int result = Example.cube(5); // 通过类名直接调用静态方法  
        System.out.println(result);  
    }  
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5算法进阶改进(11)— 添加EMA注意力机制 | 基于跨空间学习的高效多尺度注意力模块

前言:Hello大家好,我是小哥谈。EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更…

STM32MP157/linux驱动学习记录

1. uboot烧录 2.linux安装nfs服务 sudo apt-get install nfs-kernel-server rpcbind安装nfs服务 在用户根目录下创建一个名为“linux”的文件夹,以后所有的东西都放到这个“linux”文件夹里面,在“linux”文件夹里面新建一个名为“nfs”的文件夹&#…

【EI会议征稿通知】第三届艺术设计与数字化技术国际学术会议( ADDT 2024)

第三届艺术设计与数字化技术国际学术会议( ADDT 2024) 2024 3rd International Conference on Art Design and Digital Technology 所谓艺术设计,就是将艺术的审美感应用到与日常生活密切相关的设计中,使其不仅具有审美功能,而且…

如何使用VsCode编译C语言?

下载VsCode (1) 解压到D盘跟目录 (2) 运行[vscode.reg],注册右键菜单 (3) 进入[pack]文件夹,运行[install.bat]。安装基本插件。 下载mingw32 (1) 解压任意目录 (2) 我的电脑右键–高级系统设置–高级–环境变量–系统变量–Path(双击)–空白行(双击)–…

2024年1月4日 十二生肖 今日运势

小运播报:2024年1月4日,星期四,农历十一月廿三 (癸卯年甲子月丁卯日),法定工作日。 红榜生肖:狗、猪、羊 需要注意:龙、鼠、鸡 喜神方位:正南方 财神方位&#xff1a…

sodiscar!20+学习网站,工作学习两不误!

划到最后“阅读原文”——领取工具包(超过1000工具,免费素材网站分享和行业报告) Hi,我是胡猛夫~,专注于分享各类价值网站、高效工具! 更多内容,更多资源,欢迎交流!公 号…

阿赵UE学习笔记——7、导入资源

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。这次将会把一个带动作和贴图的钢铁侠模型,导入的UE的项目中。 1、准备的资源 这里有2个fbx文件,都是带着网格和动画的,模型网格和骨骼是一样的,只…

服务器中了DevicData勒索病毒怎么处理

DevicData勒索病毒是最近一段时间非常流行的勒索病毒类型,有很多企业都不幸中招,给生产和经营带来了很大的影响。所以云天数据恢复中心决定就这种类型的勒索病毒,来和各位讲讲当服务器中了DevicData勒索病毒怎么处理。 特征 1,文件…

修复移动硬盘显示盘符但打不开问题

问题: 移动硬盘显示盘符,但无法打开。点击属性不显示磁盘使用信息。 分析解决: 这是由于硬盘存在损坏导致的,可以通过系统自带的磁盘检查修复解决,而无需额外工具。 假设损坏的盘符是E,在命令行运行以下命令…

论文润色会泄露吗 智能写作

大家好,今天来聊聊论文润色会泄露吗 智能写作,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文润色会泄露吗――保护学术隐私与安全的探讨…

数字化消费新趋势:跨境电商如何满足未来消费者需求?

在数字化浪潮的推动下,全球消费者的行为和期望正在发生根本性的变化。跨境电商作为连接全球的桥梁,不仅促进了商品的自由流通,更需迎接未来数字化消费的新趋势。本文将深入探讨未来数字化消费的趋势,以及跨境电商如何有效满足这些…

C#编程-使用构造函数和析构函数

使用构造函数和析构函数 如果想要在以创建对象时就初始化成员变量,可以创建名为构造函数的特殊函数。您可能还需要使用对象后从内存中删除这些对象。这可通过称为析构函数的函数实现。 实现构造函数 构造函数是在创建对象时自动调用的特殊方法。无须显式地调用构造函数。请…

麒麟云增加计算节点

一、安装基座系统并配置好各项设置 追加的计算节点服务器,安装好系统,把主机名、网络网线(网线要和其他网线插的位置一样)、hosts这些配置好,在所有节点的/etc/hosts里面添加信息 在控制节点添加/kylincloud/multinod…

前端工程化回顾-vite 构建神器

1.构建vite 项目 pnpm create vite2.常用的配置: 1.公共资源路径配置: base: ./, 默认是/2.路径别名配置: resolve: {alias: {: path.resolve(__dirname, ./src),ass: path.resolve(__dirname, ./src/assets),comp: path.resolve(__dirnam…

单机游戏数据自动保存方案

引言 单机游戏数据的自动保存方案 大家好,2023年还有最后的3天! 有小伙伴私信我,说: 总感觉一股脑的全盘定时保存不科学,也写过保存变化的玩家数据,但是改完数据就得手动标记一下字段变化,感觉不够智能&…

Amos各版本安装指南

Amos下载链接 https://pan.baidu.com/s/1uyblN8Q-knNKkqQVlNnXTw?pwd0531 1.鼠标右击【Amos28】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 Amos28】。 2.打开解压后的文件夹,鼠标右击【Amos28】选择【以管理员身份运行…

BUUCTF--ciscn_2019_s_91

先看保护: 发现保护全没开,紧接着看看程序执行流程: 经过测试发现了段错误,这肯定就是栈溢出了。因此我们在IDA中看看具体逻辑: 程序主要就这个功能,我们还在程序中发现一个函数: 一段汇编&…

DataLoader与Dataset

一、人民币二分类 二、DataLoader 与 Dataset DataLoader torch.utils.data.DataLoader 功能:构建可迭代的数据装载器 (只标注了较为重要的) • dataset: Dataset类,决定数据从哪读取及如何读取 • batchsize : 批大小 • num_…

广告公司项目管理工具推荐:高效管理订单与项目的利器

由于广告公司每年都需要处理数千个制作订单,包括促销广告预告片和海报等,迫切需要一款能够高效管理和生产广告流程的软件。 在实施采购项目管理工具之前,广告公司的流程相当繁复,员工们需要使用约10到15个不同的Excel表格&#xf…

vue-element-admin请求接口时报错:431 Request Header Fields Too Large

vue-element-admin请求接口时报错:431 Request Header Fields Too Large 1、使用vue-element-admin框架开发运行后报错431,在网上也找了一些解决方案,有说是生成的Token太大导致的报错,也说有可能是NGINX后台设置的提交大小限制。…